- PR -

VB 2005での画像表示について

1
投稿者投稿内容
おおの
会議室デビュー日: 2008/01/28
投稿数: 6
投稿日時: 2008-01-28 10:18
お世話になります。おおのと申します。

VB2005において、大きな画像ファイルを縦にスクロールさせて
表示しているのですが、CPU負荷率が高くなってしまい、
困惑している状態です。
タイマーはマルチメディアタイマーを用いているのですが、
負荷は、表示部分の1点に集中しているようです。

何か良い方法がありましたらご教授ください。
よろしくお願いします。

タイマーイベント-----------------------
縦座標 -= 5
picturebox1.Invalidate()

picturebox1.paintイベント--------------
e.Graphics.DrawImage(bitmap1, 0, 縦座標, bitmap1.Width, bitmap1.Height)

と言う具合です。画像が小さいと負荷が下がるので、
dobon.netさんに掲載されている「画像の一部を切り取って表示する」を用いて、
描画部分だけ抽出しても、この処理自体が余計に負荷を上げてしまいました。

どうかご教授ください。よろしくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-01-28 10:52
GDI+ は大きい画像をソースにした DrawImage が苦手なようで、元画像が大きいだけでパフォーマンスが悪化します。
事前に元画像をいくつかに分割しておき、それを適宜張り合わせていくと言う手はいかがでしょうか。

あと Image プロパティを使わない PictureBox は重いだけですが。
おおの
会議室デビュー日: 2008/01/28
投稿数: 6
投稿日時: 2008-01-28 11:10
Hongliangさん、ありがとうございます。

引用:

GDI+ は大きい画像をソースにした DrawImage が苦手なようで、元画像が大きいだけでパフォーマンスが悪化します。
事前に元画像をいくつかに分割しておき、それを適宜張り合わせていくと言う手はいかがでしょうか。


その場でトリミングでは、結果が出ないので、描画をする前に、分割しておくと
言うことでしょうか。確かに、出来そうです。
picturebox配列がないので、コーディングが難しそうです。

引用:

あと Image プロパティを使わない PictureBox は重いだけですが。


これは一応試してみました。
Imageプロパティにbitmapオブジェクトを読み込ませて、Refreshでリロードをかけて、
topを直接移動してみたのですが、余計重くなってしまいました。

やはり画像分割が妥当なのでしょうか・・・
1

スキルアップ/キャリアアップ(JOB@IT)