- - PR -
VB 2005での画像表示について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-28 10:18
お世話になります。おおのと申します。
VB2005において、大きな画像ファイルを縦にスクロールさせて 表示しているのですが、CPU負荷率が高くなってしまい、 困惑している状態です。 タイマーはマルチメディアタイマーを用いているのですが、 負荷は、表示部分の1点に集中しているようです。 何か良い方法がありましたらご教授ください。 よろしくお願いします。 タイマーイベント----------------------- 縦座標 -= 5 picturebox1.Invalidate() picturebox1.paintイベント-------------- e.Graphics.DrawImage(bitmap1, 0, 縦座標, bitmap1.Width, bitmap1.Height) と言う具合です。画像が小さいと負荷が下がるので、 dobon.netさんに掲載されている「画像の一部を切り取って表示する」を用いて、 描画部分だけ抽出しても、この処理自体が余計に負荷を上げてしまいました。 どうかご教授ください。よろしくお願いします。 | ||||||||
|
投稿日時: 2008-01-28 10:52
GDI+ は大きい画像をソースにした DrawImage が苦手なようで、元画像が大きいだけでパフォーマンスが悪化します。
事前に元画像をいくつかに分割しておき、それを適宜張り合わせていくと言う手はいかがでしょうか。 あと Image プロパティを使わない PictureBox は重いだけですが。 | ||||||||
|
投稿日時: 2008-01-28 11:10
Hongliangさん、ありがとうございます。
その場でトリミングでは、結果が出ないので、描画をする前に、分割しておくと 言うことでしょうか。確かに、出来そうです。 picturebox配列がないので、コーディングが難しそうです。
これは一応試してみました。 Imageプロパティにbitmapオブジェクトを読み込ませて、Refreshでリロードをかけて、 topを直接移動してみたのですが、余計重くなってしまいました。 やはり画像分割が妥当なのでしょうか・・・ |
1