- ベストアンサー
windowsのAPIプログラミングでの差分描画?
windows98でAPIでwindow内に持続的に描画(60回/秒とかで)しているのですが、毎回そんな描画する内容が変わらないので違う部分だけを書けば高速化出来るのではと思っています。よい方法はないでしょうか?? 具体的には折れ線グラフを連続的に表示するプログラムです。一回メモりDCに書いてからbitbltしてます。このbitbltでメモリdcの全部を転送しているので遅いと思うのですが、更新部分だけをどうにか(リュージョンとかを使って?)うまくできないかと思っています。お願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
自分で更新領域を計算し、描画時に更新領域だけをbltする、ということを地道にやるしかないですね。 すでに、ダブルバッファリングをされているようですので、あとはいかに最適な更新領域を計算するかになると思います。 この更新領域の求め方は、個別のアプリごとに違います。 たとえば、厳密にリージョンを使って、再描画領域を最少にするのが早いのかというと、逆にリージョンの計算が重くて遅くなることもあります。 更新領域の計算のオーバヘッドと、再描画の面積のオーバヘッドのトレードオフが大事です。 また、遅い原因は実は他の所にあったりするかもしれません。 当然bitbltよりもStretchBlの方が遅いですし、何回も同じ場所を描画していないか(ダブルバッファを使っていると、ちらつかないので気がつかなかったりする)など、デバッガを使ってじっくり追って見るのも必要です。
お礼
やっぱりそういう方法しかないですか。。 怠けてはだめですねぇ ありがとうございましたm(__)m