2012-09-24 55 views
0

我一直在寻找大约12个小时,现在试图找到一种方法来绘制一个PictureBox上的点,我发现很多线程给出了示例代码,但我不能似乎完成了我想要的。在C中的图片框上绘制一个点的网格#

在essance什么,我试图做的是这样的:

我有一个窗户上有一个PictureBox的形成,我没有任何图片的图片框,但是我确实有背景色设置为黑色。我想创建一个新的位图图像,然后运行代码如下样式来创建白点:

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

因此给我的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); 
} 

上面的代码是在图片框Paint事件的方法。我知道它通过代码运行,因为我在方法的末尾有一个断点,但没有任何反应。我不确定我是否理解ControlPaint.DrawGrid的工作方式,我应该添加其他内容?

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

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

+0

传递你想只画点到屏幕上,或实际上有划了一个位图的点?即只有位图才能实现点的绘制? – MikeKulls

+0

最终结果是我想绘制点到一个位图图像,然后将其分配给pictureBox.Image,但我也有问题,那么我看到了ControlPaint.DrawGrid方法,并认为id试试它。但我仍然遇到了问题,但是在运行exe程序而没有调试之后,我可以看到这些点,但就像我说的,我仍然试图找到一种方法将点映射到图像上,并且我认为我与vs有同样的问题调试器,所以即时回去尝试SetPixel方法,不幸的是我已经删除了以前的代码,所以生病了一些工作。 – roadmaster

回答

1

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

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

谢谢你,显然你已经在所有3个账号上得到了它,我真的对调试问题感到惊讶,这可能是我最大的问题,我总是使用VS的调试功能。有了这个,我想不得不确保它的工作使用构建函数创建的EXE,感谢您的帮助... – roadmaster

+0

@MarkSweetman调试很好,它只是,如果你在绘画事件内断点,那往往会带来视觉工作室您的应用的顶部。这意味着你的应用程序不再被“绘制”,所以当你运行它时需要再次绘制,导致它再次破坏等。 – MikeKulls