掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
BITBLT後の画像が消えないようにするには? (ID:121422)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
もともとWindows OSでの再描画は自己責任(個々のプログラム側の責任)です。 ウィンドウの前後関係が変わる等再描画が必要になった場合には、 OS側から再描画を促すメッセージが流れてきて、プログラム側で対処するといぅ。 VB6までのPictureBoxではそのコントロール自身が描画結果をビットマップ イメージとして保持、Paintメッセージが流れてくると自動的にその ビットマップイメージを再描画するといぅ仕組みを持っていたんですが。 この方式の欠点としては、 ・ビットマップイメージを流し込む動作しかできない。 ・のろい。(ちらつきやすい) があり、特に「VBではゲームを作りにくい」と言われる要因のひとつとなっていました。 .NET Framework上(下?)で動作するVB.NETになった際に、このへんの仕様が 他言語と統一(てゅうかWindows OSの仕様に準拠)されました。 PictureBoxはコンテナとしての位置付けからも外され、勝手に再描画する機能もなくなり、 純粋に描画用のウィンドウとしての扱いになったんですね。 mimoさんの言われるように、VB6まではImageプロパティが持つイメージを Pictureプロパティに流し込む(正確にはちょっと違いますが)ことで 静的にイメージを保持できる簡便さを持っていましたが、他方でそれは VBのPictureBoxの限界にもなっていたわけで。 VB6と同等の機能を実装するのであれば、ガッさんが実践されたよぅに 静的なBitmapオブジェクトを生成して自己管理していくことで可能です。 > そのためにコーディングの量が倍増なんて馬鹿らしいと思いますので 従来ソースのあちこちに書き散らかしていた描画ロジックを一ヶ所にまとめ、 Paintイベントのトリガで動作するようにするだけですので コーディング量としてはさほど増減しないのではないでしょうか。 どちらかといぅと、旧来の手法からソース組み立ての発想を変えていく必要が あるという点で抵抗感があるのではないかなぁと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.