【问题标题】:Drawing a Grid of Dots on a PictureBox in C#在 C# 中的 PictureBox 上绘制点网格
【发布时间】:2014-03-09 17:40:44
【问题描述】:

我已经搜索了大约 12 个小时,现在试图找到一种在 PictureBox 上绘制点的方法,我发现很多线程都给出了示例代码,但我似乎无法完成我想要的。

本质上我想要做的是:

我有一个带有 PictureBox 的 Windows 窗体,PictureBox 中没有任何图像,但是我确实将 BackColor 设置为黑色。我正在尝试创建一个新的位图图像,然后运行代码以创建以下样式的白点:

    ..........
    ..........
    ..........
    ..........

因此在 PictureBox 上给了我一个网格样式。但是,每次尝试我都失败了,所以如果有人可以帮助我了解如何使用它,我将不胜感激。

我最近的尝试是使用 ControlPaint.DrawGrid 方法,如下所示:

private void picBox_Display_Paint(object sender, PaintEventArgs e)
{
    Size size = new Size(35, 35);
    Rectangle rect = new Rectangle(0,0,picBox_Display.Width, picBox_Display.Height);
    ControlPaint.DrawGrid(Graphics.FromHwnd(picBox_Display.Handle), rect, size, Color.White);
}

以上代码在 PictureBox Paint 事件方法中。我知道它贯穿代码,因为我在方法的末尾有一个断点,但什么也没发生。我不确定我是否理解 ControlPaint.DrawGrid 的工作原理,我应该添加其他内容吗?

我今天早些时候尝试使用 Bitmap.SetPixel 方法,但一直遇到问题并一直在寻找其他方法来尝试完成它。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 您是只想在屏幕上绘制点,还是将点实际绘制到位图上?即位图是否仅用于实现点的绘制?
  • 最终结果是我想在位图图像上绘制点,然后将其分配给 pictureBox.Image,但我也遇到了问题,然后我看到了 ControlPaint.DrawGrid 方法并想尝试一下它。但我仍然有问题,但是在没有调试的情况下运行 exe 程序后,我可以看到这些点,但就像我说的那样,我仍在尝试找到一种方法将这些点放到图像上,并且我认为我在使用 vs 时遇到了同样的问题调试器,所以我回去尝试 SetPixel 方法,不幸的是我已经删除了以前的代码,所以我不得不对其进行一些工作。

标签: c# bitmap picturebox


【解决方案1】:

您需要为此使用 e.Graphics。另请注意,调试此类代码可能很困难,因为调试通常会使绘图无效,因此需要再次绘制。最后一个参数是你正在绘制的背景颜色,所以它看起来与你指定的相反。如果你的背景是黑色的,你需要传入 Color.Black

ControlPaint.DrawGrid(e.Graphics, rect, size, Color.Black);

【讨论】:

  • 谢谢你,显然你在所有 3 个帐户上都得到了它,我对调试问题感到非常惊讶,这可能是我最大的问题,我总是使用 VS 的调试功能。有了这个,我想我必须确保它使用构建函数创建的 exe 工作,谢谢你的帮助......
  • @MarkSweetman 调试很好,只是如果您在绘图事件中设置断点,那么通常会在您的应用程序顶部打开 Visual Studio。这意味着您的应用程序不再“绘制”,因此当您运行它时需要再次绘制,这会导致它再次中断等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多