トップページ > 過去ログ > 記事閲覧
BMP保存エラー
名前:たか 日時: 2008/02/19 23:35

いつもお世話になっております。 いきなり質問なのですが、リファレンスページを参照してSaveDrawScreen関数を使用したところ、 出力したBMPが真っ黒で保存されてしまいました。 しかし、何度か試していると十回に一度くらいで描画されているものがBMPとして出力されておりました(成功) ソースはリファレンスにあるもののコピーで、BMPの出力前と後でWait関数を使用して止めたところ、画面にはBMPにしたい画像が描画されておりました。 何故、ファイルの出力に失敗するのかがわからず困っております。 思い当たる原因がありましたらご教授願います。 よろしくお願いいたします。

Page: 1 |

Re: BMP保存エラー ( No.1 )
名前:たか 日時:2008/02/19 23:50

追記: windowモードで立ち上げて実行してみたところ、 出力される画像は真っ黒ではなくなったのですが、 画面全体での該当範囲が出力されてしまいます(つまり、window以外の部分) これは仕様ということでしょうか?
Re: BMP保存エラー ( No.2 )
名前:キーチック 日時:2008/02/20 02:18

とりあえず,私はSaveDrawScreenで失敗したことがないので仕様ということはないと思います. ソースのコピーということですが,描画されるtest1.bmpの画像によってはそういうことはあるのではないかと思います.(サイズその他の条件も考慮) あるいはハードウェアの問題で,グラフィックメモリの不足もしくは描画処理速度が追いついていないなどの原因は考えられないでしょうか.
Re: BMP保存エラー ( No.3 )
名前:たか 日時:2008/02/20 12:48

とりあえず、ウィンドウtrueで他のPCで試してみたところ、 やはり画面の絶対領域の部分(デスクトップの背景など)を保存しておりました。 ソースを確認しましたところ、 ウィンドウの座標と描画を行う相対的な座標を足している部分があったので、 その辺で問題があるのかもしれません。 描画先や画面の色などによっても場合分けされていたので、 そのところでうまくいってないのかもしれません。 また、フルスクリーン時も同じ事が原因のように思えますが、 フルスクリーン時にソフトの座標がどうなっているのかわからないので何ともいえません。 処理の問題はたぶん、問題ないと思っていて、 描画を目視するまでキーウェイトで待ち、 SaveDrawScreen関数を抜けるのを確認してからソフトを落とすようにしています。 また、ウィンドウ時に絶対座標(0,0)にウィンドウを置いて処理を行うと問題なく描画されたものがBMP形式で保存されました。 この場合、手動でウィンドウを持っていくためドットのズレが発生してしまい問題解決までにはなりません。 現状でわかってるのは、このくらいです。 また、何かわかった事があればご報告いたします。 よろしくお願いいたします。
Re: BMP保存エラー ( No.4 )
名前:たか 日時:2008/02/20 23:57

度々、自分へのレスすみません。 SaveDrawScreen関数が絶対座標値で保存してしまう条件がわかりました。 どうやら、マスクの画面をクリエイトされた状態で関数を使用すると、 絶対値で保存してしまうようです。 また、一度マスク画面をデリートすれば、 画面の座標で保存されます。 対策としてはSaveDrawScreen関数を使う度に、 マスク画面を一度破棄する他なさそうです。 一応、ご参考までにということで。
Re: BMP保存エラー ( No.5 )
名前:管理人 日時:2008/03/03 00:34

原因まで調べて頂いて申し訳ありません。 後程修正バージョンをアップします。

Page: 1 |