teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

最初の説明が端折りすぎだったのでちょっと修正

2016/03/01 06:46

投稿

catsforepaw
catsforepaw

スコア5944

answer CHANGED
@@ -1,5 +1,6 @@
1
- `CreateGraphics`は`Paint`イベントに反映されないため、Paintイベント発生時に消されてしまいます。ですので`Load`イベントで描画しようとしても、直後のPaintイベントで消えてしまっているのです。ボタン押下で描画できているとしていますが、他のアプリのウィンドウをかぶせたりしてPaintイベントを発生させると消えてしまいます。
1
+ `CreateGraphics`メソッドで取得したGraphicsオブジェクトに対して描画した内容は`Paint`イベントに反映されないため、Paintイベント発生時に消されてしまいます。ですので`Load`イベントで描画しようとしても、直後のPaintイベントで消えてしまっているのです。ボタン押下で描画できているとしていますが、他のアプリのウィンドウをかぶせたりしてPaintイベントを発生させると消えてしまいます。
2
2
 
3
+
3
4
  PictureBoxにグラフィックを描画するときは、`Image`プロパティにクライアント領域と同じサイズの`Bitmap`オブジェクトを設定し、そこに描画してください。
4
5
 
5
6
  コード例です。