2012-09-24 56 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