C# PictureBox 繪圖:使用獨立方法的高效技巧
在 C# 窗體應用程序中,可以在 PictureBox 控件上繪製自定義圖形。然而,用戶在嘗試通過單獨的方法執行此操作時可能會遇到問題。
問題:
用戶可能希望創建一個方法來方便地在 PictureBox 上繪製圓圈,但發現該方法無法產生預期結果。問題方法初始化位圖、圖形對象和用於繪製圓圈的畫筆。但是,當在 PictureBox 的 Paint 事件處理程序中調用時,它無法正確繪製圓圈。
解決方案:
要有效地使用單獨的方法在 PictureBox 上繪圖,務必明確目標是在 PictureBox 顯示的圖像中繪圖,還是直接在控件本身繪圖。
方法一:直接在控件上繪圖
要直接在控件上繪圖(不影響圖像),請使用 PictureBox 的 Paint 事件處理程序,如下所示:
private void pictureBox2_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44));
}
在這種情況下,繪圖是持久的,圖形與控件綁定,遵循控件的任何大小調整或移動。
方法二:在圖像中繪圖
要在 PictureBox 顯示的圖像中繪圖,請創建一個單獨的方法,並使用從 PictureBox 的 Image 屬性獲得的 Graphics 對象進行繪圖。
void drawIntoImage()
{
using (Graphics G = Graphics.FromImage(pictureBox1.Image))
{
G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44));
}
pictureBox1.Refresh();
}
繪圖完成後,調用 PictureBox 的 Refresh() 方法來更新顯示。在這種情況下,圖形對圖像來說是持久的,並且會受到圖像任何縮放或變換的影響。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3