为什么 ControlPaint.DrawGrid 函数不向 PictureBox 显示任何内容
Why Isn't ControlPaint.DrawGrid Function not Displaying Anything to a PictureBox
我想做方格纸格子,把绘图设置成图片框的图片。现在我什至可能在绘制方格纸网格时使用了错误的东西,但我四处询问,有些人说 DrawGrid
方法可行。 None 下面的代码返回任何错误,但是当我 运行 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;
}
知道问题出在哪里吗?
您的 PictureBox
可能有一个 White
背景..如果是这样,请告诉 ControlPaint.DrawGrid
方法所以..:[=21=]
ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size),
yourGridspacing , Color.White);
参数不控制点的颜色;它应该有助于找到 对比 的颜色。所以也许最好的写法是:
ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size),
yourGridspacing, pictureBox1.BackColor);
这将适用于除 Color.Transparent
以外的所有颜色。(在这种情况下,下方控件的颜色将决定这些点是否可见..)
你可能会疑惑,为什么要选择这样迂回的方式呢?好吧,方法 DrawGrid
并不是像 Graphics
中那样的普通绘图方法。它是旨在构建 Windows 控件(如 Button
或 CheckBox
)的稳健显示的几种方法之一。现在,绘制网格的背景需要 没有有只有一种颜色;它可以是图像或渐变,它可以改变..
您应该选择一种典型的颜色来代表该背景。然后系统将为点选择具有良好对比度的颜色。
有关控制网格颜色的方法,请参阅 my other answer 中的最后一个选项!
我想做方格纸格子,把绘图设置成图片框的图片。现在我什至可能在绘制方格纸网格时使用了错误的东西,但我四处询问,有些人说 DrawGrid
方法可行。 None 下面的代码返回任何错误,但是当我 运行 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;
}
知道问题出在哪里吗?
您的 PictureBox
可能有一个 White
背景..如果是这样,请告诉 ControlPaint.DrawGrid
方法所以..:[=21=]
ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size),
yourGridspacing , Color.White);
参数不控制点的颜色;它应该有助于找到 对比 的颜色。所以也许最好的写法是:
ControlPaint.DrawGrid(G, new Rectangle(Point.Empty, bmp.Size),
yourGridspacing, pictureBox1.BackColor);
这将适用于除 Color.Transparent
以外的所有颜色。(在这种情况下,下方控件的颜色将决定这些点是否可见..)
你可能会疑惑,为什么要选择这样迂回的方式呢?好吧,方法 DrawGrid
并不是像 Graphics
中那样的普通绘图方法。它是旨在构建 Windows 控件(如 Button
或 CheckBox
)的稳健显示的几种方法之一。现在,绘制网格的背景需要 没有有只有一种颜色;它可以是图像或渐变,它可以改变..
您应该选择一种典型的颜色来代表该背景。然后系统将为点选择具有良好对比度的颜色。
有关控制网格颜色的方法,请参阅 my other answer 中的最后一个选项!