いつも参考にさせていただいています。
VB6(SP5),W2Kで開発を行っています。
2枚の画像を読み込んで、1画面で表示するプログラムを作っています。
わざわざ1画面にしているのは、表示の際にウィンドウサイズに合わせて画像を
拡大・縮小表示をさせるためです。
(画像は2枚で1組です)
画像ファイルの読み込み。表示は次のように組んでいます。
'右のイメージ読み取り
picRight.Picture = LoadPicture(画像ファイル名)
'左のイメージ読み取り
picLeft.Picture = LoadPicture(画像ファイル名)
'メイン画面に画像転送(左)
Call BitBlt(picMain.hDC, 0, 0, picLeft.Width, picLeft.Height, picLeft.hDC, 0, 0, SRCCOPY)
'メイン画面に画像転送(右)
Call BitBlt(picMain.hDC, picLeft.Width, 0, picRight.Width, picRight.Height, picRight.hDC, 0, 0, SRCCOPY)
縦横サイズの小さい画像だと、あまり問題にならないのですが大きい画像を扱うと
メイン画面の作成で待ちが大きくなってしまいます。
画像の結合を早くする方法は無いでしょうか。
よろしくお願いします。
>大きい画像を扱うと
具体的には?
DirectXのDirectDrawを使ってみるとか。(古っ)
名無し様
ご返信ありがとうございます。
>具体的には?
平均しますと、横900 縦1200ぐらいのJpeg画像です。圧縮率は良くわかりませんが
それほど劣化しては見えないのであまり圧縮はしていないと思います。
>DirectXのDirectDrawを使ってみるとか。(古っ)
DirectXかGDI+なのかなと私も思っているのですが、ネットを漁っても資料が
中々見つけられず、ここを頼ってしまいました。
大きい画像を2枚読み込めば、メモリをそれだけ必要とするわけだし、それを確保しようとしたりするのもあって多少時間はかかるでしょうけど。
現状どれくらいの時間がかかって、どれくらいの時間に縮めたいとお考えですか?
名無し様
>現状どれくらいの時間がかかって、どれくらいの時間に縮めたいとお考えですか?
体感ですが、「次ページ表示」をマウスで指示すると平均して1〜2秒ほどかかります。
これでも、ゆっくり画像を見る時には問題は無いのですが、連続して画像を見る時(連続してマウスをクリック)
にはストレスが大きいと依頼元から言われています。
出来ればマウスの連続クリックにも耐えうるレスポンスを確保したいと思っており
他の部分も色々と改修を進めておりますが、この画像結合だけはおっしゃる通り
メモリ確保の問題ですので難しく、良いアイデアが無い状態です。
逆にメモリに余裕があるなら、先に出来るだけ多くの画像をメモリ内に
よみこんでおき、ページが表示されてた段階でウィンドウに展開すると
いった方が速く処理できるんじゃないでしょうか?
画像の読み込みJPEG伸長時間>画像のウィンドウへの描画時間
だと思います。
ツイート | ![]() |