Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ピクチャボックスの描画が消えないようにする事について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=137#CommentId956
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 (社会人)
投稿日時
2008/11/24 02:37:55
解決してよかったです。
Invalidateはご指摘のように本来は「無効にする」メソッドです。
Windowsは無効化された領域に対して再描画を行う習性があるので、
無効化することで再描画されるという仕組みです。
(WindowsXPでウィンドウを2つ重ねて、前にあるウィンドウをずらすと、
後ろにあるウィンドウの裏に隠れていた部分(を表す領域)がInvalidateされます。
そこで、すかさずWindowsはこの領域を再描画し、ユーザーからは
裏に隠れていた部分が表に出てきたように見えるわけです。)
ですので、再描画が必要ない領域まで無効化すると、
Windowsは必要ない部分までもう一度描画するのでその分パワーを使います。
もし、再描画が必要な範囲をもっとせまく限定できるのならば
Invalidateメソッドの引数にその限定された領域を指定することでパフォーマンス等向上します。
本当はInvlidateメソッドは単に無効化するだけで、再描画をするメソッドはUpdateです。
MSDNを見ると強制再描画を行うにはInvalidate後にUpdateせよという趣旨のことが書いてあるので、
Invalidateの下にUpdateも入れておいた方がいいのかもしれません。
ちょっと長く書きすぎました。このようにWindowsの描画に関する仕組みが.NETをやっていてもかかわっきます。このあたりはC++だろうが、機械語だろうがWindows上で動いていれば事情は同じですので理解しておけば今後も役に立つと思います。