- - PR -
TreeViewのちらつき
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-18 11:43
いつもお世話になっています。
環境 WindowsVista/XP VS2005 です。 画面のちらつきについて教えていただきたいことがあります。 Vista上でフォームのサイズ変更を行った際はTreeViewがちらつかないのですが、XP上で動作させた場合にちらついてしまいます。 ListViewでも同様の現象がありましたのが、コントロールを継承して ・DoubleBuffered=true としたところ、XP上でサイズ変更時にちらつかなくなりました。 フォームのDoubleBufferedもtrueを設定しています。 TreeViewでは、DoubleBufferedの設定は意味がないみたいです。。。 サイズ変更時のちらつきは、 BeginUpdate/EndUpdate でどうする事もできないので、何かよい方法はないかと思い相談しました。 ちなみに、上記コントロールは、SplitContainerの中に配置しています。 よろしくお願いします。 # #WebBrowserコントロールも同様にちらついたので、継承コントロールを作成し、 # DoubleBuffered=true #としたのですが、上記設定をしてもちらつきました。。。 # | ||||
|
投稿日時: 2007-06-21 22:18
いろいろ調査して、ひとつ分かったことがあります。
フォームの ・TransparencyKey を設定するとちらついていることがわかりました。 何かちらつきを防ぐよい手はないでしょうか? | ||||
|
投稿日時: 2007-06-22 06:04
この間は
「ALTで縁が消えるウィンドウ」、 今回は 「TransparencyKeyが設定されてるForm上のTreeView」ですか。 ずいぶん特殊なアプリケーションを作っているようですね。 TreeViewはDoubleBufferedが効きません。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39187&forum=7 上記URLと同じ手法でバッファを有効にできるかもしれません。 有効にできたとしても、ちらつきが治るとは限りませんが。 | ||||
|
投稿日時: 2007-06-22 09:46
れいさん、いつも回答いただきありがとうございます。
上記を取り入れてみたところ、リサイズ時の表示内容のちらつきは皆無になりましたが、コントロールのサイズを大きくするときにおかしな動き(厳密には、フォームのサイズ変更処理が終わってから、ツリービューのサイズが変わる)となっていました。 リンク先にれいさんが書いているように、何か問題がある可能があるのであれば、この手段は有効ではないかもしれないですね。 通常、TransparencyKeyを設定するフォームなどでは、ツリービューなどは配置しないものなのでしょうか? 単純なコントロール配置ではない場合、上記プロパティをセットするのは描画的によくないって事になりますか? | ||||
|
投稿日時: 2007-06-22 14:39
普通のアプリケーションではTransparencyKeyはほとんど使わないと思います。 実際、私のPCで透明や半透明を使っているアプリケーションは Messanger、タスクバー、サイドバーぐらいです 前にも書きましたが、TransparencyKeyはLayeredWindowで実装されてますので、 設定しないのに比べたら描画処理は遥かに重くなります。 単純なコントロール配置でない場合というのが どんなのかわかりませんが…。 そもそも単純なコントロール配置以外普通使わないですねぇ。 | ||||
|
投稿日時: 2007-06-22 20:12
れいさん、回答ありがとうございます。
確かに、普段単純な配置しかしないですね、、、 どちらにせよ、LayeredWindowで実装する場合、描画が重くなるという事がわかっただけでもよかったです。 全般的に知識が足りていないので、時間に余裕のある時に勉強に励みます。 どうもありがとうございました m(__)m |
1