如何在圖畫框中繪製圓形和線條?如何在圖畫框中繪製圓形和線條?
回答
在PictureBox是控制並具有圖像源 - 所以你必須在圖像上繪製和圖像交給控制,以顯示它
MyImage = new Bitmap(fileToDisplay);
pictureBox1.ClientSize = new Size(xSize, ySize);
pictureBox1.Image = MyImage;
最好的方法是不要在一個picturebox中繪製一個圓和線!它不是爲此目的而設計的。
從鮑勃·鮑威爾的GDI +博客:
這個問題的根源是Windows的基本規則 編程已經被打破。而由於圖片框 的一個後果是責備那些真的不是它的錯。爲了幫助解釋 爲什麼,下面的四點概述了這種情況下出了什麼問題。
PictureBox控件用於顯示圖像。它不是圖形表面的方便佔位符。
Windows是一個事件驅動的系統,其中每個事件必須在正確的上下文中進行服務,並且註定要處理按鈕單擊或鼠標移動事件的事件不得用於在屏幕或其他奇怪的東西上進行繪圖。
PictureBox通過繪製存儲在其Image屬性中的基於System.Drawing.Image的對象刷新自身。如果沒有圖像,它將顯示背景顏色。
任何控件的圖形對象的竊取和繪製都不是好的做法,應該強烈建議不要在正確的時間在正確的地方處理事件的規則。基本上如果你這樣做會導致你痛苦。當你將頭撞在牆上時會引起疼痛。這是一個跡象,你應該停止這樣做。 PictureBox.CreateGraphics調用是一樣的。
正確的做法。
遵循事件驅動系統的規則很簡單,但需要一個小小的預先考慮的 。所以,如果你想繪製一些 圖形,並讓它保持在那裏,當窗口移動它前面 並再次離開或當你最小化和恢復,你必須服務 Paint事件的任何對象它是你想畫的。 這個應用程序中的PictureBox帶着行李隨身攜帶,這對於 是不必要的。如果你只想在一個 的地方繪製東西,通過響應Form.Paint事件在表單上繪製它。如果 您需要一個方便的佔位符,用於在設置的 範圍內工作的圖形,請使用Panel控件併爲其Paint事件提供服務。如果您想讓 爲公司圖像複製圖形,請創建一個控件並在OnPaint覆蓋中執行繪圖。
原文鏈接(不再有效):http://bobpowell.net/picturebox.htm
注:原路段鮑勃鮑威爾的博客已經不再起作用。我爲了歷史目的而將它留在這裏。該頁面的內容仍然可以在本文編輯日期的互聯網存檔(https://web.archive.org/web/20120330003635/http://bobpowell.net/picturebox.htm)上查看。
+1這真的是正確的答案。感謝您的鏈接,它描述了根本問題。 – Sabuncu 2014-04-05 09:15:04
-1「Linkrot」...這個答案對於問題是什麼或者做什麼提供了一些提示。 「鼓勵與外部資源的鏈接,但請在鏈接的周圍添加上下文,以便您的同行用戶瞭解它是什麼以及爲什麼會出現在該鏈接中。始終引用重要鏈接中最相關的部分,以防目標網站無法訪問或永久離線。「資料來源:http://stackoverflow.com/help/how-to-answer 但我找到了保存在「Wayback Machine」中的bobpowell頁面:https://web.archive.org/web/20120216111903/http: //bobpowell.net/picturebox.htm – 2015-05-01 05:20:30
這是一個可怕的答案。 Bobpowell的(另外很棒的)頁面不僅沒有了,而且也沒有建議你不應該畫在PictureBox上。實際上,它們的默認DoubleBuffering使其成爲適用於開箱即用的唯一控件。鮑勃只是警告不要使用drained Control.CreateGraphics從所有可怕的MSDN起始示例頁面複製新手。 – TaW 2017-02-21 16:59:03
或:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(
new Pen(Color.Red,2f),
new Point(0,0),
new Point(pictureBox1.Size.Width, pictureBox1.Size.Height));
e.Graphics.DrawEllipse(
new Pen(Color.Red, 2f),
0,0, pictureBox1.Size.Width, pictureBox1.Size.Height );
}
處理圖片框的繪畫事件並在那裏進行自定義繪圖。
- 1. 如何在我的Java繪畫程序中繪製直線,矩形和圓圈?
- 2. 在橢圓形的圖畫框周圍繪製邊框
- 3. 如何在iphone sdk中使用圖形繪製虛線圓圈?
- 4. 如何在桌面視圖中繪製線條,圓圈
- 5. 如何使用畫布和svg繪製圓形矩形?
- 6. Android:如何繪製圓角的線條?
- 7. 在java中使用線繪製圓形
- 8. 用條形圖和線條繪製flot圖形
- 9. 從圓形畫出圓形和線段
- 10. 如何在圓圈內繪製圓形?
- 11. 如何在mimchart庫iPhone中隨着線圖繪製條形圖?
- 12. 如何在圓角矩形內或圓形內繪製圖像?
- 13. 如何在圖像上繪製線條/繪畫?
- 14. 用WebGL和Three.js繪製圓形粗線
- 15. 如何繪製平滑/圓形/曲線線圖? (C#)
- 16. 如何在gnuplot中繪製條形圖?
- 17. 如何在縮放畫布上用位圖繪製線條,圓圈
- 18. 如何繪製形狀像橢圓形,線和手勢
- 19. starling框架 - 如何繪製圓線
- 20. 如何繪製帶有圓角的正方形的線條?
- 21. 如何在html5畫布上繪製圓形扇形?
- 22. 如何在PyGame中繪製圓形?
- 23. 如何在間隔條形圖中繪製水平和垂直線條 - oxyplot - WPF
- 24. 如何用PDFsharp繪製圓形圖像
- 25. 如何繪製圓形libgdx
- 26. 如何繪製如下圖所示的圓形進度條?
- 27. 如何爲圓形圖像視圖繪製邊框?
- 28. 如何在Java中繪製交互式圖形/線條?
- 29. 如何在條形圖上繪製Mathematica中的誤差線?
- 30. [Excel] [VBA]如何在圖形中繪製一條線?
這將繪製__到一個位圖___,而不是__在picturebox__。它的工作原理是完全不同的! – TaW 2017-02-21 17:01:18