• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# PictureBoxへの描画を行うとメッセージボックスが表示されません。)

C# PictureBoxへの描画でメッセージボックスが表示されない

このQ&Aのポイント
  • C#のPictureBoxへの描画を行う際、メッセージボックスが表示されない現象に直面しました。
  • 描画は成功しているものの、メッセージボックスが表示されない問題にダブルバッファリングという解決策を試しましたが不具合が生じました。
  • 描画処理とメッセージボックスの表示を両立させる方法がわからないので、解決策をご教示いただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

メッセージボックスについては状況が再現できないので分かりませんが、ペイントイベントでビットマップを定義しているのはよろしくないですね。 myBitmapのサイズを定義する最適な場所はSizeChangedイベントです。なおかつ、既存のmyBitmapのサイズよりも変更後のサイズが小さくなったら、ビットマップを作り直す必要はありません。同じビットマップをクリアして使い回しすればいいだけです。これなら、ウィンドウが拡大されたときにしかビットマップの再形成がされなくなり、負荷はかなり減るはずです。 画像が静的なものであれば、SizeChangedイベント内でmyBitmapへの描画も完了してしまいます。あとはmyBitmapをPictureBox.Imageに割り当てておけば勝手に再描画されます。 参考書などでもグラフィックはPaintイベントで行う、という説明がよくあります。それは描画内容が少ない場合の話であって、内容が多い場合はバックバッファに描画し、Paintイベントではバックバッファの転写のみを行うようにしたほうがよいでしょう。

tasoh
質問者

お礼

回答ありがとうございます。 確かに、言われてみるとSizeChangeイベントでサイズを変更すればOKですね・・・ それに、PictureBoxのPaintイベントを呼んでも、結局はBitmapに描画してるのでPaintイベントを呼ぶ必要はありませんね; 別に描画メソッドを作り、必要な時だけ描画処理を呼ぶようにしてみたところ、メッセージボックス表示も解決しました。 バックバッファがまだよくやり方を理解できていないので 頑張ってやってみます。 ありがとうございました。