为什么ControlPaint.DrawGrid函数不向PictureBox显示任何内容

时间:2015-01-30 00:31:14

标签: c# image bitmap grid picturebox

我想制作一个方格纸网格并将图纸设置为图片框的图像。现在我甚至可能使用错误的东西绘制方格纸网格,但我已经问过,有些人说DrawGrid方法可行。以下代码均未返回任何错误,但当我运行button1_Click方法时,它不会向picturebox显示任何内容。

private void button1_Click(object sender, EventArgs e)
{
    button2.Visible = true;

    Bitmap bmp = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height);
    Size yourGridspacing = new Size((int)numericUpDown1.Value, (int)numericUpDown2.Value);
    using (Graphics G = Graphics.FromImage(bmp))
    {
         ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size), yourGridspacing , Color.Black);
    }

    pictureBox1.Image = bmp;
}

知道问题可能是什么?

1 个答案:

答案 0 :(得分:0)

您的PictureBox可能有White背景..如果有,请告诉ControlPaint.DrawGrid方法,以便......:

     ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size), 
                           yourGridspacing , Color.White);

param 控制点的颜色;它应该有助于找到对比的颜色。所以编写它的最佳方式可能是:

     ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size), 
                           yourGridspacing, pictureBox1.BackColor);

这适用于除Color.Transparent之外的所有颜色..(在这种情况下,下面控件的颜色将决定点是否可见..)

你可能想知道为什么选择这种迂回的方式?好吧,方法DrawGrid并不像普通的绘图方法那样,就像Graphics中的方法一样。它是构建强大的Windows控件显示方法之一,如ButtonCheckBox ..现在,绘制网格的背景需要 只有一个颜色;它可能是一个图像或一个渐变,它可能会改变..

你应该选择一种典型的颜色来代表那个背景。然后系统将选择具有良好对比度的颜色的点。

有关控制网格颜色的方法,请参阅my other answer中的最后一个选项!