DrawRectangle 超出表单边界
DrawRectangle goes out of form bounds
private void Form1_Paint(object sender, PaintEventArgs e)
{
g = e.Graphics;
blockList.DrawBlocksInList(g); //Drawing the blocks that were added to the list in the Form1_Load below;
g.FillRectangle(MainBlock._Pen.Brush, MainBlock._Rectangle); //Drawing the Main Block;
}
private void Form1_Load(object sender, EventArgs e)
{
float rectSize = this.Width / 10.0f; //What the size of each rectangle should be, depending on the form's size;
Block BlockForList; //No need to initialize it;
for (float y = 0; y < this.Height; y += rectSize) //500 is the size of the Form, 50 is the size of the X & Y of each rectangle;
for (float x = 0; x < this.Width; x += rectSize)
{
BlockForList = new Block(pen, new RectangleF(x, y, rectSize, rectSize)); //Initializing the block each time to set different locations;
blockList.list.Add(BlockForList); //Adding the blocks to the list to draw them all;
}
}
之后我使用一种方法绘制了 blockList.list 中的所有块,但是发生了这种情况:
http://imgur.com/5h7ZMTH
当然,它会越界 - 你已经告诉它允许每个块的左边缘上升到 Width
,而右边缘上升到 Height
.
你想要这个吗?
for (float y = 0; y < this.Height-rectSize; y += rectSize) //500 is the size of the Form (this.Width & this.Height), 50 (rectSize) is the size of the X & Y of each rectangle (basically squares);
for (float x = 0; x < this.Width-rectSize; x += rectSize)
--
编辑
ah - 同样在绘画中你首先需要调用 base
OnPaint()
方法。
这将填充背景。
private void Form1_Paint(object sender, PaintEventArgs e)
{
g = e.Graphics;
blockList.DrawBlocksInList(g); //Drawing the blocks that were added to the list in the Form1_Load below;
g.FillRectangle(MainBlock._Pen.Brush, MainBlock._Rectangle); //Drawing the Main Block;
}
private void Form1_Load(object sender, EventArgs e)
{
float rectSize = this.Width / 10.0f; //What the size of each rectangle should be, depending on the form's size;
Block BlockForList; //No need to initialize it;
for (float y = 0; y < this.Height; y += rectSize) //500 is the size of the Form, 50 is the size of the X & Y of each rectangle;
for (float x = 0; x < this.Width; x += rectSize)
{
BlockForList = new Block(pen, new RectangleF(x, y, rectSize, rectSize)); //Initializing the block each time to set different locations;
blockList.list.Add(BlockForList); //Adding the blocks to the list to draw them all;
}
}
之后我使用一种方法绘制了 blockList.list 中的所有块,但是发生了这种情况: http://imgur.com/5h7ZMTH
当然,它会越界 - 你已经告诉它允许每个块的左边缘上升到 Width
,而右边缘上升到 Height
.
你想要这个吗?
for (float y = 0; y < this.Height-rectSize; y += rectSize) //500 is the size of the Form (this.Width & this.Height), 50 (rectSize) is the size of the X & Y of each rectangle (basically squares);
for (float x = 0; x < this.Width-rectSize; x += rectSize)
--
编辑
ah - 同样在绘画中你首先需要调用 base
OnPaint()
方法。
这将填充背景。