3

因此,我正在创建一个二维网格,其中包含 flowLayoutPanel 内的矩形和圆形图形。然而,我遇到的问题是它们没有被完全绘制。

这是按下按钮时的事件代码。

    private void DrawIt()
    {

        System.Drawing.Graphics graphics = flowLayoutPanel1.CreateGraphics();
        graphics.Clear(Form1.ActiveForm.BackColor);

        int row = Convert.ToInt32(textBox1.Text);
        int column = Convert.ToInt32(textBox2.Text);

        flowLayoutPanel1.Width = (row * 50) + 30;
        flowLayoutPanel1.Height = (column * 50) + 1;

        for (int j = 0; j < column; j++)
        {
            for (int i = 0; i < row; i++)
            {
                System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(50 * i, 50*j, 50, 50);
                graphics.DrawEllipse(System.Drawing.Pens.Black, rectangle);
                graphics.DrawRectangle(System.Drawing.Pens.Red, rectangle);
            }
        }
    }

我使每个矩形的大小为 50 像素,这样我就知道计算宽度和高度有多大。我什至添加了一些额外的东西,以防我搞砸了。但最后我得到以下信息:

不完整的图纸

关于可能是什么问题的任何想法?

4

1 回答 1

5

您从面板创建图形,然后更改其大小。图形对象因此剪辑到以前的大小。

在创建图形对象之前更改大小:

int row = Convert.ToInt32(textBox1.Text);
int column = Convert.ToInt32(textBox2.Text);

flowLayoutPanel1.Width = (row * 50) + 30;
flowLayoutPanel1.Height = (column * 50) + 1;

System.Drawing.Graphics graphics = flowLayoutPanel1.CreateGraphics();
graphics.Clear(Form1.ActiveForm.BackColor);

for (int j = 0; j < column; j++)
{
    for (int i = 0; i < row; i++)
    {
        System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(50 * i, 50 * j, 50, 50);
        graphics.DrawEllipse(System.Drawing.Pens.Black, rectangle);
        graphics.DrawRectangle(System.Drawing.Pens.Red, rectangle);
    }
}
于 2013-11-03T01:08:53.167 回答