PictureBox を使用したグラフィックス レンダリングの最適化: PaintEvent とカスタム描画
Windows フォーム開発者は、PictureBox コントロール内でカスタム グラフィックをレンダリングする必要が頻繁にあります。 ただし、PictureBox の Paint
イベント内でカスタム描画メソッドを直接呼び出すと、予期しない結果が生じる場合があります。この記事では、PictureBox に描画するための 2 つの効果的なアプローチを検討し、それぞれの長所と短所を強調します。
方法 1: ペイント イベント内で直接描画する
PictureBox の表面に直接レンダリングするには、Paint
イベント ハンドラーを利用します。
<code class="language-csharp">private void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44)); // Add more drawing instructions here }</code>
このコードは、楕円を直接描画します。 ここで行われた描画は、Paint
イベントがトリガーされるたびに (ウィンドウのサイズ変更など) 再描画されることに注意してください。
方法 2: PictureBox の画像に描画する
または、PictureBox の画像に直接描画します:
<code class="language-csharp">void drawIntoImage() { using (Graphics G = Graphics.FromImage(pictureBox1.Image)) { G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44)); // Add more drawing instructions here } pictureBox1.Refresh(); // Ensure the changes are displayed }</code>
このアプローチは画像のピクセルを変更します。 Refresh()
呼び出しは、描画完了後に表示を更新するために重要です。 この方法では、特に複雑なグラフィックや静的なグラフィックの場合に、より詳細な制御が可能になります。
Paint
イベントに直接描画するか、画像に描画するかの選択は、特定のアプリケーション要件によって異なります。選択する際は、パフォーマンスのニーズやグラフィックスの複雑さなどの要素を考慮してください。
以上が効率的なグラフィックス レンダリングのために PictureBox PaintEvent とカスタム描画メソッドのどちらを選択するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。