DOBON.NET DOBON.NETプログラミング掲示板過去ログ

BackColorプロパティがTransparentのコントロールを画像の上に配置すると描画が非常に遅い問題の回避方法

環境/言語:[WindowsXP .NET Framework 2.0 C#]
分類:[.NET]

こんにちは。アべです。

Panelクラスに画像を表示させ、その上にLabelクラスを30個ほど
おきます。そのLabelのBackColorプロパティをTransparent(透明)
にして、PanelのEnableプロパティを切り替えると非常に描画が
遅くなります。


何か想定される懸念点や、画像を使うときの注意点など
ありましたらご指摘ください。
今ところ、どうしても画像の上で動的なラベルを配置して
コントロール化をはかる必要あり、それが処理が遅くて
困っております。


当方はダブルバッファリングを試みましたが、出来ませんでした。

なぜかというと、個々のラベルからPanelに対して、
Enableの変更都度、描画指示飛んでくるそれらを
束ねて一回だけ表示ということが私の手持ちのやり方を
組み合わせて出来ませんでした。


何か良い技があればご教授をお願い致します。

宜しくお願い致します。
こんにちは。

以下何の実証もないですが経験から言わせていただきますと
「コントロールとはそんなもん」です。
コントロールは基本的に描画遅いですね。
出来るのであれば直書きした方が良いです。

ダブルバッファリングもコントロールにはきっと無力です。
私の予想では1つのコントロールはその中で完結していてて
上に載っているコントロールとかにあまり興味がないんだと思います。

ペイントイベントがEnableプロパティ変更した時に
数十回飛んできてはいませんか?

早くするにはそのペイントを一回にすれば良いんでしょうけども
何回飛んでくるかが判別できないので無理っぽいです。

Enable 変更時のみというのであれば出来るかもしれませんが。
上に他のウィンドウが乗っかったりするとひどい目にあうかもしれません;
2006/09/09(Sat) 09:57:00 編集(投稿者)

kyohさん、回答を有難うございます。

やってみて、一つ一つのラベルのEnableプロパティ変更事に
ペイントイベントが何回も飛んできます。

この動きが、問題を起こしている原因なのですが、
いろいろな技(?プロパティやメソッド)をもってしても、
それを抑制することが出来ませんた。

kyohさんの言われるとおり、無理なのだろうと思います。

とりあえず、無理という形であきらめます。

有難うございました。

DOBON.NET | プログラミング道 | プログラミング掲示板