radianの備忘録

プログラミングやPCに関する事をメモ代わりに残していきます

Win7でProgressBarの表示が遅延する

 Win7環境で(おそらくVistaも)、ビジュアルスタイルを有効にした状態で、一定速度以上でProgressBarのValue値をセットすると、セットしたValue値とProgressBarの表示が同期しません。

 

f:id:radian_jp:20141016144057p:plain

 

デモプログラムを用意してみました。

https://1drv.ms/u/s!AiiVDEkK6bacgViVOb2f2CrG3gwX

 

ProgressBarの最大値は100に設定してありますが、Win7で実行すると、Value値が100になってもデフォルトのProgressBarはゲージが満タンにならないのが確認できます。

 

遅延する詳細な原因は不明ですが、Win7のビジュアルスタイルのアニメーション効果に起因するものではないかと思います。ビジュアルスタイルを無効にした場合や、WinXPだと特に問題は発生しません。

 

デモプログラムのProgressBarExクラスでは、UserPaintを有効にして自力描画することにより、従来どおりValue値と表示を同期しています。しかしながら、ビジュアルスタイルのアニメーション効果は再現出来ないので、標準のProgressBarと同一の表示にはなりません。