C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 47 を表示中)
■25447 / )  Re[2]: 画像が消えてしましいます。( ; ; )
□投稿者/ PATIO (115回)-(2008/09/19(Fri) 14:06:36)
2008/09/19(Fri) 14:10:14 編集(投稿者)
2008/09/19(Fri) 14:09:44 編集(投稿者)
2008/09/19(Fri) 14:07:24 編集(投稿者)

既に よねKENさんがその物ズバリの内容を書かれていますが、

Windowsのイベントドリブンの考え方をしっかり理解しておくと言語を変えても
応用が利きますからお勧めします。

Windowsでの画面の書き換えは、Paintイベントがトリガーになります。
再描画処理がない(Paintイベントの中に処理がない)場合、他の画面で上書きされない
限りは前の描画結果が残っていますが、それは黒板に書いた絵みたいな物で
他の描画で上書きされるまでの命です。
各ウインドウは常に全てを再描画しているわけではなくて
他の画面に隠れた部分に関しては再度見えるようになるまでは描画対象から外されます。
なので、再び見えるようになったタイミングでその部分を再描画する必要が
あるわけです。OSが再描画を指示するとPaintイベントが来ますから
このイベントが来た時に自画面のすべてを再描画可能な状態にしておく事で
画面を常に最新の状態にする事が出来ます。

例えば、画面上の描画の内、ボタンのクリックイベントに対応する処理に
しかない描画処理はボタンをクリックすると描画されますが、
他のウインドウが重なってしまうとその処理は呼ばれないので消えてしまいます。
Paintイベントに対応する処理の中で行なわれている描画処理だけが毎回必ず動くわけです。
描画処理その物は別の関数やクラスにしてしまっても良いのですが、
描画を実行するために呼び出す処理はPaintイベントに対応した処理の中にないと駄目です。

Windows上の描画に関しては言語が変わっても考え方は同じなので覚えておいた方がよいです。

返信 編集キー/


管理者用

- Child Tree -