NO.33550で同時に質問させていただいております。
スライドショーで2点、教えていただきたいことがございます。
・スライドショー表示時の、縦横比の固定について
現在別の機能においては、
縦横比固定で画像を表示することに成功しているのですが、
スライドショーで順に画像を表示するとき、
画像が見つからないということでエラーが発生してしまいます。
まずソースを記載致します。
エラーを解析しておりますが、自分としては、
2枚目の画像が表示されるときに、23行目の
noteload "image\\" + tmpImg
の部分で、リサイズするための情報が取れていないのではと思うのですが、
mesで情報を見ながらやっても、どうしても2枚目からの情報を取得することができませんでした。
<エラー発生のソース>
#include "hspcv.as" #include "user32.as" /* スライドショーを表示 */ *slide // ウィンドウID3を作成 screen 3, 800, 600 // ディレクトリ一覧を作成 dirlist imgFileDir, "image\\*.bmp", 0 // 変数をメモリノートパッド命令のバッファに設定 notesel imgFileDir // notemax=メモリノートパッドの行数 repeat notemax noteget tmpImg, cnt // メモリノートパッド用の変数を作成 notesel bufBmpData // バイナリデータとして画像を読み込む noteload "image\\" + tmpImg // バイナリデータより画像サイズを取得(それぞれ4バイト取得) imgSizeX = lpeek(bufBmpData, $12) // x(横)サイズ imgSizeY = lpeek(bufBmpData, $16) // y(縦)サイズ // 画面:x(横)サイズ windowSizeX = 800 // 画面:y(縦)サイズ windowSizeY = 600 // 画像と画面のx(横)の比率 ratioX = double(windowSizeX) / imgSizeX // 画像と画面のy(縦)の比率 ratioY = double(windowSizeY) / imgSizeY // cvload命令で画像を読み込む cvload "image\\" + tmpImg, 2 // アスペクト比を固定で、画像をバイキュービック法でリサイズ if ratioX > ratioY { cvresize ratioY * imgSizeX, windowSizeY, 2, CV_INTER_CUBIC } else { cvresize windowSizeX, ratioX * imgSizeY, 2, CV_INTER_CUBIC } cvresize 800, 600, 2, CV_INTER_CUBIC // ウィンドウID3に表示 cvgetimg 2, 3 // 表示間隔を設定 wait 400 cls loop stop // 処理の停止
<縦横比固定なしでスライドショーを表示するソース(動きます)>
#include "hspcv.as" #include "user32.as" /* スライドショーを表示 */ *slide // ウィンドウID3を作成 screen 3, 800, 600 // ディレクトリ一覧を作成 dirlist imgFileDir, "image\\*.bmp", 0 // 変数をメモリノートパッド命令のバッファに設定 notesel imgFileDir // notemax=メモリノートパッドの行数 repeat notemax noteget tmpImg, cnt // cvload命令で画像を読み込む cvload "image\\" + tmpImg, 2 cvresize 800, 600, 2, CV_INTER_CUBIC // ウィンドウID3に表示 cvgetimg 2, 3 // 表示間隔を設定 wait 400 cls loop stop // 処理の停止
・スライドショーの、開始・一時停止・停止のボタン対応について
上記のスライドショーに、開始・一時停止・停止等のボタンを
つけたいと考えております。
実際に動かせていないため、イメージ的なものになるのですが、
もうひとつバッファでウィンドウを作成し、そちらにボタンをつけて、
画像と合成する、というような感じになるのでしょうか?
いろいろと問題があり、まずは上記の動くほうのソースでも、
cvloadで画像を読んでいるからなのかわかりませんが、
リサイズした画像のサイズでウィンドウが作られてしまい、
800×600など、固定したサイズでのウィンドウの作成ができません。
可能であれば、ウィンドウのサイズを固定させ(800×600など)、
その中にスライドショーの画像と、ボタンを一緒に表示させ、
スライドを行うといったものにしたいと思っています。
技術不足なのに高望みをしているようで申し訳ありませんが、
どうぞよろしくお願い致します。