C# PictureBox 描画: 独立したメソッドを使用した効率的な手法
C# フォーム アプリケーションでは、PictureBox コントロールにカスタム グラフィックを描画できます。ただし、別の方法でこれを実行しようとすると、問題が発生する可能性があります。
質問:
ユーザーは、PictureBox に円を簡単に描くメソッドを作成したいと考えていますが、このメソッドでは期待どおりの結果が得られないことがわかります。問題のメソッドは、円の描画に使用されるビットマップ、グラフィックス オブジェクト、およびブラシを初期化します。ただし、PictureBox の Paint イベント ハンドラー内で呼び出すと、円を正しく描画できません。
解決策:
個別のメソッドを効果的に使用して PictureBox 上に描画するには、目的が PictureBox によって表示される画像内に描画することなのか、それともコントロール自体内に直接描画することなのかを明確にすることが重要です。
方法 1: コントロールに直接描画します
(画像に影響を与えずに) コントロールに直接描画するには、次のように 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>
この場合、描画は永続的であり、コントロールのサイズ変更や移動に従ってグラフィックがコントロールにバインドされます。
方法 2: 画像内に描画
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 中国語 Web サイトの他の関連記事を参照してください。