DXライブラリでsnapshot
DXライブラリでsnapshot
DXライブラリでsnapshotが撮れると聞いたのですが、
これはどの関数を使ってどのように使えばいいのでしょうか?
保存方法も分かる方がいましたら教えてください
これはどの関数を使ってどのように使えばいいのでしょうか?
保存方法も分かる方がいましたら教えてください
Re:DXライブラリでsnapshot
こんばんは。
おそらく、GetDrawScreenGraphのことでしょうかな?
使い方は、本家DXライブラリのリファレンスページを読むほうが早いでしょう。
サンプルコードがありますので、それをご覧になるとわかりやすいかと思います。
ご存じでしょうが、こちらです。
ttp://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
「保存方法」とは、
「キャプチャーした画面を、画像ファイルとして保存する方法」ということでしょうかな?
それとも、グラフィックハンドルとして保存する、ということでしょうか?
おそらく、GetDrawScreenGraphのことでしょうかな?
使い方は、本家DXライブラリのリファレンスページを読むほうが早いでしょう。
サンプルコードがありますので、それをご覧になるとわかりやすいかと思います。
ご存じでしょうが、こちらです。
ttp://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
「保存方法」とは、
「キャプチャーした画面を、画像ファイルとして保存する方法」ということでしょうかな?
それとも、グラフィックハンドルとして保存する、ということでしょうか?
Re:DXライブラリでsnapshot
ありがとうございます。
キャプチャーした画面を、画像ファイルとして保存する方法です。
どうやって、指定したフォルダ等の中に名前を指定してつけて保存するのかが分からないです。
キャプチャーした画面を、画像ファイルとして保存する方法です。
どうやって、指定したフォルダ等の中に名前を指定してつけて保存するのかが分からないです。
Re:DXライブラリでsnapshot
おおっとすいません!!
正しくは、こちらの関数でした。
SaveDrawScreen です。
これなら、一発で画面のスクリーンショットを撮れます。
こちらも、本家のリファレンスページを参照するのが一番いいと思います。
「その他」の方にあったので見落としていました、申し訳ないです…。
正しくは、こちらの関数でした。
SaveDrawScreen です。
これなら、一発で画面のスクリーンショットを撮れます。
こちらも、本家のリファレンスページを参照するのが一番いいと思います。
「その他」の方にあったので見落としていました、申し訳ないです…。
Re:DXライブラリでsnapshot
こんな感じでどうですか?
#include <shlwapi.h> #pragma comment( lib , "shlwapi.lib" ) void SnapShot(void){ if( CheckHit_Switch(KEY_INPUT_P) ){ for( int i=0;i<1000;i++ ){ char str[64]; sprintf( str , "SnapShot/ss%03d.bmp" , i ); if( PathFileExists(str)==0 ){ SaveDrawScreen( 0 , 0 , 640 , 480 , str ); break; } } } }
Re:DXライブラリでsnapshot
チルチルさんの方法で試してみると、エラーが発生したのですが、
これはどう対処すればいいのでしょうか?
error C3861: 'sprintf' の宣言を確認してください。
error C2664: 'PathFileExists': 識別子が見つかりませんでした
PathFileExistsって何ですか?
これはどう対処すればいいのでしょうか?
error C3861: 'sprintf' の宣言を確認してください。
error C2664: 'PathFileExists': 識別子が見つかりませんでした
PathFileExistsって何ですか?
Re:DXライブラリでsnapshot
>>チルチルさん
実行してないですが、
for( int i=0;i<1000;i++ ){
↑ループ1000回も回して大丈夫でしょうか?
実行してないですが、
for( int i=0;i<1000;i++ ){
↑ループ1000回も回して大丈夫でしょうか?
Re:DXライブラリでsnapshot
>PathFileExistsって何ですか?
失礼、説明不足でしたね
PathFileExists関数はshlwapi.hで宣言されていて、引数に渡したファイルが存在すれば0を返します
sprintf関数はたしかstdio.hで宣言されていて書式付き文字列を出力します
DxLib.h内でstdio.hがインクルードされているので使えると思います
関数の前に
#include "DxLib.h"
#include <shlwapi.h>
#pragma comment( lib , "shlwapi.lib" )
が書いてあれば行けると思うんですけどね・・
#pragma comment( lib , "shlwapi.lib" )
は必要ないかもしれませんが・・
>↑ループ1000回も回して大丈夫でしょうか?
これはss000.bmp~ss999.bmpまでのスナップショットが
取れると言う意味なので実際に1000回も回らないと思います
SnapShotフォルダにss000.bmpが無ければ、その名前で保存して終了
あれば次は
SnapShotフォルダにss001.bmpが無ければ、その名前で保存して終了
と言う風に続いて行くので最初の5回ぐらいでループから抜けると思います
>#include <shlwapi.h>
>#pragma comment( lib , "shlwapi.lib" )
>って何ですか?
私も同じ質問をした時に教えていただいたので良く知りませんが
おそらく標準ライブラリの1つです
失礼、説明不足でしたね
PathFileExists関数はshlwapi.hで宣言されていて、引数に渡したファイルが存在すれば0を返します
sprintf関数はたしかstdio.hで宣言されていて書式付き文字列を出力します
DxLib.h内でstdio.hがインクルードされているので使えると思います
関数の前に
#include "DxLib.h"
#include <shlwapi.h>
#pragma comment( lib , "shlwapi.lib" )
が書いてあれば行けると思うんですけどね・・
#pragma comment( lib , "shlwapi.lib" )
は必要ないかもしれませんが・・
>↑ループ1000回も回して大丈夫でしょうか?
これはss000.bmp~ss999.bmpまでのスナップショットが
取れると言う意味なので実際に1000回も回らないと思います
SnapShotフォルダにss000.bmpが無ければ、その名前で保存して終了
あれば次は
SnapShotフォルダにss001.bmpが無ければ、その名前で保存して終了
と言う風に続いて行くので最初の5回ぐらいでループから抜けると思います
>#include <shlwapi.h>
>#pragma comment( lib , "shlwapi.lib" )
>って何ですか?
私も同じ質問をした時に教えていただいたので良く知りませんが
おそらく標準ライブラリの1つです
Re:DXライブラリでsnapshot
詳しい解説ありがとうございます!
ただ、この
if( PathFileExists(str)==0 ){
部分でエラーが新しくでて、
error C2664: 'PathFileExistsW' : 1 番目の引数を 'char [64]' から 'LPCWSTR' に変換できません。
実行できないのですが、どうしたらエラーが外せるのでしょうか?
ただ、この
if( PathFileExists(str)==0 ){
部分でエラーが新しくでて、
error C2664: 'PathFileExistsW' : 1 番目の引数を 'char [64]' から 'LPCWSTR' に変換できません。
実行できないのですが、どうしたらエラーが外せるのでしょうか?
Re:DXライブラリでsnapshot
breakを見落としていました^^;
>>LPCWSTR
プロジェクトの文字セットの設定がUnicodeになっていると思います。
マルチバイト文字に変更すると良いと思います。
>>LPCWSTR
プロジェクトの文字セットの設定がUnicodeになっていると思います。
マルチバイト文字に変更すると良いと思います。
Re:DXライブラリでsnapshot
う~んそれは私にもわからないですね
私の所ではコンパイルが通るので環境的な問題かもしれません
とりあえずコード全部作ってみたので実行してみてください
Pを押すとスナップショットを撮ります
実行する前に作業ディレクトリにSnapShotフォルダを作成しておいてくださいね
sprintf関数は別の関数を推奨しているようです
それが何かは知らないですが・・
私の所ではコンパイルが通るので環境的な問題かもしれません
とりあえずコード全部作ってみたので実行してみてください
Pを押すとスナップショットを撮ります
実行する前に作業ディレクトリにSnapShotフォルダを作成しておいてくださいね
sprintf関数は別の関数を推奨しているようです
それが何かは知らないですが・・
Re:DXライブラリでsnapshot
また違う方法で代用すればできると思いますが
DXライブラリ自体がマルチバイト文字で動くのでマルチバイト文字にした方が良いと思います
それから上のコードなんですがフォルダが無い場合に作成してくれる機能は無いので
アレを使う場合は「SnapShotフォルダを消さないでください」ってどこかに書いた方が良いと思います・・
DXライブラリ自体がマルチバイト文字で動くのでマルチバイト文字にした方が良いと思います
それから上のコードなんですがフォルダが無い場合に作成してくれる機能は無いので
アレを使う場合は「SnapShotフォルダを消さないでください」ってどこかに書いた方が良いと思います・・
Re:DXライブラリでsnapshot
なるほど。分かりました。ありがとうございます。
あれ?でも今度は
error LNK2019: 未解決の外部シンボル __imp__PathFileExistsA@4 が関数 _WinMain@16 で参照されました。
というエラーに変わっただけなのですが・・
あれ?でも今度は
error LNK2019: 未解決の外部シンボル __imp__PathFileExistsA@4 が関数 _WinMain@16 で参照されました。
というエラーに変わっただけなのですが・・
Re:DXライブラリでsnapshot
う~ん、どうもリンクに失敗しているようですが私の時は
#pragma comment( lib , "shlwapi.lib" )
これで解決できたんですが、今回はまだ足りないようですね・・
プロジェクトの設定が怪しいですが
これは私の手には負えないので誰か手助けをお願いします
#pragma comment( lib , "shlwapi.lib" )
これで解決できたんですが、今回はまだ足りないようですね・・
プロジェクトの設定が怪しいですが
これは私の手には負えないので誰か手助けをお願いします
Re:DXライブラリでsnapshot
ソリューションのクリーン→ソリューションのビルド
もしくは、
ソリューションのリビルド
を実行しても出来ませんでしょうか。
あと、SnapShotフォルダが見つからないときは、
CreateDirectory関数なんかでフォルダを作ってあげると親切かもしれません。
もしくは、
ソリューションのリビルド
を実行しても出来ませんでしょうか。
あと、SnapShotフォルダが見つからないときは、
CreateDirectory関数なんかでフォルダを作ってあげると親切かもしれません。
Re:DXライブラリでsnapshot
どう考えてもshlwapi.libをリンクできていないようなのですが…。
新しいプロジェクトを作って、設定をDxLibを導入するときと同じ設定に変えてから、
以下のプログラムをそのままコピペしてコンパイルしてみてください。
その場合は、新しいプロジェクトに移すといいかもしれません。
実行できなければ…すみません、私もわかりません。
新しいプロジェクトを作って、設定をDxLibを導入するときと同じ設定に変えてから、
以下のプログラムをそのままコピペしてコンパイルしてみてください。
#include <windows.h> #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") int WINAPI WinMain(HINSTANCE, HINSTANCE, char *, int) { ::PathFileExists("test.txt"); return EXIT_SUCCESS; }これで実行できれば、変な設定を行っている(行われている)場合があります。
その場合は、新しいプロジェクトに移すといいかもしれません。
実行できなければ…すみません、私もわかりません。
Re:DXライブラリでsnapshot
昔そのリンクの仕方を教えたような気がするので一応。
まず「shlwapi.lib」は標準ライブラリではなかったような気が・・・
むつさんの環境次第ではライブラリ自体が無い可能性があります。
関数自体はチルチルさんが気を利かせて作った処理を実行するのに必要なものですが
主題であるのはスナップショットなので「SaveDrawScreen」だけ実行したのでいいんじゃないでしょうか?
まず「shlwapi.lib」は標準ライブラリではなかったような気が・・・
むつさんの環境次第ではライブラリ自体が無い可能性があります。
関数自体はチルチルさんが気を利かせて作った処理を実行するのに必要なものですが
主題であるのはスナップショットなので「SaveDrawScreen」だけ実行したのでいいんじゃないでしょうか?
Re:DXライブラリでsnapshot
>まず「shlwapi.lib」は標準ライブラリではなかったような気が・・・
確かに一覧に軽く目を通しても見つからないので違うかもしれませんね
とりあえずVC++およびBCCではあるみたいですが、むつさんの環境は何ですか?
>主題であるのはスナップショットなので「SaveDrawScreen」だけ実行したのでいいんじゃないでしょうか?
そう言えば主題はそっちでしたね・・失礼しました
とりあえずSaveDrawScreen関数の使い方はわかって頂けたと思うので
後はyさんの指摘してくれた機能などを実現する関数を探して組み込めば完成すると思います
>龍神録でスナップショットは撮ることできないのですか?
見た感じは無いようですね
確かに一覧に軽く目を通しても見つからないので違うかもしれませんね
とりあえずVC++およびBCCではあるみたいですが、むつさんの環境は何ですか?
>主題であるのはスナップショットなので「SaveDrawScreen」だけ実行したのでいいんじゃないでしょうか?
そう言えば主題はそっちでしたね・・失礼しました
とりあえずSaveDrawScreen関数の使い方はわかって頂けたと思うので
後はyさんの指摘してくれた機能などを実現する関数を探して組み込めば完成すると思います
>龍神録でスナップショットは撮ることできないのですか?
見た感じは無いようですね