C# PictureBox の円描画: 2 つの効果的なアプローチ
この記事では、C# の別のメソッドを使用して PictureBox 内に円を描画するという課題について説明します。 一般的なアプローチが失敗する理由を検証し、2 つの強力な代替案を紹介します。
現在のメソッドが失敗する可能性がある理由
PictureBox コントロールでの直接ペイントと別のメソッド内での画像操作を組み合わせようとすると、不整合が発生します。このハイブリッド アプローチは、多くの場合、予期しない結果をもたらします。
方法 1: Paint
イベント経由で直接ペイント
PictureBox に直接永続的に描画するには、Paint
イベントを利用します。 PaintEventArgs
は、描画用の Graphics
オブジェクトを提供します。 この方法は、PictureBox に直接関連付けられた動的更新に最適です。
<code class="language-csharp">private void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44)); }</code>
方法 2: PictureBox の画像に描画する
または、PictureBox の画像自体に描画します。 Graphics
を使用して pictureBox1.Image
から Graphics.FromImage
オブジェクトを作成します。 この Graphics
オブジェクトに図形を描画し、pictureBox1.Refresh()
を呼び出して表示を更新します。このアプローチでは、PictureBox のサイズが変更されたり再描画されたりしても、描画が維持されます。
<code class="language-csharp">void DrawCircleOnImage() { using (Graphics G = Graphics.FromImage(pictureBox1.Image)) { G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44)); // ... other drawing operations ... } pictureBox1.Refresh(); }</code>
適切な方法の選択
Paint
イベント ハンドラーは、直接的なコントロール結合のアプローチを提供しますが、画像への描画は、PictureBox の再描画後も存続する、より永続的なソリューションを提供します。 アプリケーションのニーズと望ましい描画動作に最も適した方法を選択してください。 どちらの方法でも、図面を広範囲にカスタマイズおよび変更できます。
以上がC# で外部メソッドを使用して PictureBox に円を効率的に描画するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。