■11358 / ) |
Re[7]: ListViewのちらつき、仮想化について |
□投稿者/ れい (298回)-(2007/12/12(Wed) 18:50:13)
|
2007/12/12(Wed) 18:58:44 編集(投稿者)
■No11350 (渋木宏明(ひどり) さん) に返信 > >サブアイテムを再設定する時、ListView 全体を Refresh() しているかのようにチラツつきませんか? > こんな感じ。
ListViewはサブアイテムを変更するときでも全体を更新しますし、 更新がすごく遅いので白いバックグラウンドが見えてしまってちらつきますね。
ダブルバッファしたListViewを使うと 全体をRefreshしているようにはなりません。
class BufferedListView : System.Windows.Forms.ListView { protected override bool DoubleBuffered { get { return true; } set {} } }
■No11352 (NyaRuRu さん) に返信 > Vista (というか DWM) はティアリング回避のために GDI 描画を横取りし,オフスクリーンサーフェイスを介したデスクトップ描画を行っています.
Vistaの描画も大体は知っていて、その上で言ったんですが、 私の言葉の定義が変なのかな?
> >「ちらつき」の定義の問題でしょうか? > 確かに,何故ちらついているか,どのようにちらついているかは最初に確認した方が良いのかもしれませんね.
私の「ちらつく」の定義は、「本来上書きされて消えてしまうべきものが見えてしまう状態」です。 バッファした画像を実際に描画するときにずれたりするのは含めません。 そうするとXPでもVistaでも、ダブルバッファを正しく使ってるなら、定義上絶対にちらつきません。
一般的定義だと思っていましたが、違いますか?
> という感じに様々な様々なレイヤーの特性が絡んでくる現象なので,特定の Win32 コントロールをダブルバッファ描画しただけで解決というほど事態は単純ではない,というのが私の意見です.
私の定義の通りの問題なら、ダブルバッファで解決ですが、 「ちらつく」が、高速で描画していること事態で発生する「見づらい状態」なら、 ダブルバッファしても解決するとは限りませんね。
ダブルバッファしているのにちらつくらしいので、 複雑な問題ということなのかもしれません。 なら詳しく話を聞きたいところです。
追記。 あと2回投稿したら300回記念! 大切に投稿します。
|
|