首頁 > 後端開發 > C++ > 如何在 C# 中使用單獨的方法在 PictureBox 上有效率地繪圖?

如何在 C# 中使用單獨的方法在 PictureBox 上有效率地繪圖?

Patricia Arquette
發布: 2025-01-21 11:21:10
原創
540 人瀏覽過

How Can I Efficiently Draw on a PictureBox Using a Separate Method in C#?

C# PictureBox 繪圖:使用獨立方法的高效技巧

在 C# 窗體應用程式中,可以在 PictureBox 控制項上繪製自訂圖形。然而,用戶在嘗試透過單獨的方法執行此操作時可能會遇到問題。

問題:

使用者可能想要建立一個方法來方便地在 PictureBox 上繪製圓圈,但發現該方法無法產生預期結果。問題方法初始化位圖、圖形物件和用於繪製圓圈的畫筆。但是,當在 PictureBox 的 Paint 事件處理程序中呼叫時,它無法正確繪製圓圈。

解:

要有效地使用單獨的方法在 PictureBox 上繪圖,務必明確目標是在 PictureBox 顯示的圖像中繪圖,還是直接在控製本身繪圖。

方法一:直接在控制上繪圖

要直接在控制項上繪圖(不影響圖片),請使用 PictureBox 的 Paint 事件處理程序,如下所示:

<code class="language-csharp">private void pictureBox2_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44));
}</code>
登入後複製

在這種情況下,繪圖是持久的,圖形與控制項綁定,遵循控制項的任何大小調整或移動。

方法二:在影像中繪圖

要在 PictureBox 顯示的圖像中繪圖,請建立一個單獨的方法,並使用從 PictureBox 的 Image 屬性獲得的 Graphics 物件進行繪圖。

<code class="language-csharp">void drawIntoImage()
{
    using (Graphics G = Graphics.FromImage(pictureBox1.Image))
    {
        G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44));
    }
    pictureBox1.Refresh();
}</code>
登入後複製

繪圖完成後,呼叫 PictureBox 的 Refresh() 方法來更新顯示。在這種情況下,圖形對影像來說是持久的,並且會受到影像任何縮放或變換的影響。

以上是如何在 C# 中使用單獨的方法在 PictureBox 上有效率地繪圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板