描画方法によって、ビットマップの描画時間がどれだけ違うか。

Delphiで開発していて、TImageを使っていられる方、「妙に遅いなー」と感じた事、無いですか?
そうなんです、TImageは便利な代わりに裏でいろいろとやっているので遅いんですねー。 反対に、TPaintBoxは高速と思うんですけど、画面が重なって消えてしまえば自分で書き直さないといけないし、面倒くさそう……
どちらを使うかは、その時に重視したいのが作成の簡易さか、速度かによって違います。 (こういうのをトレードオフっていうんですよねぇ)
ここで、どちらを使うかの参考になるように描画方法でどれぐらい速度差が出るかをまとめてみました。


基本の描画

Formに直接書く場合と、PaintBoxに書く場合、TImageを使う場合の 3つの描画方法による速度比較を行ってみました。結果は.....

描画方法 ビットマップ(128*128,1000枚)の描画時間(ms)
TImageに画像書き込み 27966
TPaintBoxに画像書き込み 2109
TFormに直接画像書き込み 2099
PC9821Xa13でWindows95(解像度 1024*768(high color))を使用した場合の速度

なんと、10倍以上の差が出てしまいました。ゲーム作成とかの速度が要求されるアプリケーションの場合は、 この差は大きいですねー。
機会を作ってCreateDIBSectionとか、DirectXとかの評価をしてみたいと思いますが、 とりあえず少しの手間で10倍の速度が手に入るならいいですよね。


透過画像を描画する

四角い画像データを扱うだけでなく、丸い形やその他のいろいろな形を持った 画像を描画したいですね。そこで登場するのが透過画像を用いた描画。

(説明は途中です。また書きます。とりあえず表だけ(^^;)

描画方法 ビットマップ(128*128,1000枚)の描画時間(ms)
論理計算を用いて透過画像書き込み 14932
TImageListを用いて透過画像書き込み 3282
PC9821Xa13でWindows95(解像度 1024*768(high color))を使用した場合の速度


「ここが間違っている」、「ここが判りにくい」などのご意見は、 yagura@geocities.co.jpまでメールをください。

戻る