C言語を始めて4日目です、初めて利用させていただきます。
ゲームプログラミングの館からリンクをたどってきました。
「画像をメモリにロードして表示する。」の部分で詰まっています。
正常にコンパイル、メイクされていますが、実行してみると真っ黒なウィンドウのみで画像は表示されません。
また、SetDrawScreenやファイルパスの書き方、場所変更等、検索して対処法をいくつか試して見ましたが、全く変わりはありませんでした。
原因について教えて下さい。
使用しているのは
OS:XP
Borland C++
ソフト使用ソフト:BCC Developer(デバッカ無し)
画像はプロジェクトフォルダ\画像\にあります。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE ); // ウィンドウに
DxLib_Init(); // DXL初期化用変数
int Handle; // データハンドル
Handle = LoadGraph( "画像\キャラクタ00.PNG" ); // ロード
DrawGraph ( 50,100,Handle,TRUE ); // 画像を描画
WaitKey(); // キー入力待ち
DxLib_End(); // DXL終了処理
return 0;
}
ちなみにLoadGraphScreenでも表示されませんでした。
LoadGraph~DrawGraphで画像が表示されません。
Re: LoadGraph~DrawGraphで画像が表示されません。
printfDxあたりで画面にHandleの中身を出力し、
正常にロードが完了しているかどうか確かめてみてください。
Handleが-1であれば失敗していますので、
ファイルが正しい位置にあるかを再度確かめてください。
正常にロードが完了しているかどうか確かめてみてください。
Handleが-1であれば失敗していますので、
ファイルが正しい位置にあるかを再度確かめてください。
Re: LoadGraph~DrawGraphで画像が表示されません。
回答ありがとうございます。
先ほどのソースのdrawgraphの行を消して
int PrintfDX(int Handle );を入力したところ、そちらもウィンドウに表示されませんでした。
一度、様々なサンプルを漁っていた時に表示されたことがあるので、設定なりなんなり何間違っているのだとは思いますが、糸口すらつかめていません。
先ほどのソースのdrawgraphの行を消して
int PrintfDX(int Handle );を入力したところ、そちらもウィンドウに表示されませんでした。
一度、様々なサンプルを漁っていた時に表示されたことがあるので、設定なりなんなり何間違っているのだとは思いますが、糸口すらつかめていません。
Re: LoadGraph~DrawGraphで画像が表示されません。
Printf の命令を直しました。
失礼しました。
ー1は出ておらず、表示されていたのでロードはされているようです。
問題を絞れて来たのでもう一度調べ直してみたいと思います。ありがとうございます。
失礼しました。
ー1は出ておらず、表示されていたのでロードはされているようです。
問題を絞れて来たのでもう一度調べ直してみたいと思います。ありがとうございます。
Re: LoadGraph~DrawGraphで画像が表示されません。
グラフィックスの描画先がバックバッファに設定されているのではないでしょうか。
DrawGraphの後に ScreenFlip(); を書いてみてください。
ScreenFlipはバックバッファに描画された内容をフロントバッファにコピーします。
これで描画されなかったら、描画先をバックバッファに明示的に設定してみてください。
DxLib_Init(); のあとに SetDrawScreen( DX_SCREEN_BACK ) ; です。
(参考までに)フロントバッファに直接描かずに、バックバッファに描いてからコピーする。という方法をダブルバッファリングといいます。
参考URL http://homepage2.nifty.com/natupaji/DxL ... ture3.html
DrawGraphの後に ScreenFlip(); を書いてみてください。
ScreenFlipはバックバッファに描画された内容をフロントバッファにコピーします。
これで描画されなかったら、描画先をバックバッファに明示的に設定してみてください。
DxLib_Init(); のあとに SetDrawScreen( DX_SCREEN_BACK ) ; です。
(参考までに)フロントバッファに直接描かずに、バックバッファに描いてからコピーする。という方法をダブルバッファリングといいます。
参考URL http://homepage2.nifty.com/natupaji/DxL ... ture3.html
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: LoadGraph~DrawGraphで画像が表示されません。
ゲームプログラミングの館のままのコードで表示されるはずです。
なので、なにか間違いが有るはずです。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ] 1.1章 DXライブラリが使える環境を整えよう」
http://dixq.net/g/01_01.html
こちらのプロジェクトをダウンロードしたまま使ってみてください。
そして、自分のものと違う所を探してみましょう。
なので、なにか間違いが有るはずです。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ] 1.1章 DXライブラリが使える環境を整えよう」
http://dixq.net/g/01_01.html
こちらのプロジェクトをダウンロードしたまま使ってみてください。
そして、自分のものと違う所を探してみましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: LoadGraph~DrawGraphで画像が表示されません。
回答ありがとうございます。
雨ガエル様
どちらも試しましたが、状態は変わらず、黒い画面でした。
しかし。貼って頂いたサイトを見る限り、後々必要になりそうなことでしたので
参考にさせていただきます。
ありがとうございます。
Softya様
そちらのプロジェクトをそのまま使おうと思いましたが、そのままでは利用できず、
test.cppを直接開きました。
そしてコンパイル、メイクしてみたところ、メイクの部分でエラーが表示されました。
その後、自分のプロジェクトにソースをコピー後、実行すると真っ黒な画面が表示されます。
混乱してきたので、編集ソフトの方から原因を探ってみたいと思います。
雨ガエル様
どちらも試しましたが、状態は変わらず、黒い画面でした。
しかし。貼って頂いたサイトを見る限り、後々必要になりそうなことでしたので
参考にさせていただきます。
ありがとうございます。
Softya様
そちらのプロジェクトをそのまま使おうと思いましたが、そのままでは利用できず、
test.cppを直接開きました。
そしてコンパイル、メイクしてみたところ、メイクの部分でエラーが表示されました。
その後、自分のプロジェクトにソースをコピー後、実行すると真っ黒な画面が表示されます。
混乱してきたので、編集ソフトの方から原因を探ってみたいと思います。
最後に編集したユーザー らすとさん on 2013年5月19日(日) 16:19 [ 編集 1 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: LoadGraph~DrawGraphで画像が表示されません。
あっと分かりました。らすとさん さんが書きました:回答ありがとうございます。
雨ガエル様
どちらも試しましたが、状態は変わらず、黒い画面でした。
しかし。貼って頂いたサイトを見る限り、後々必要になりそうなことでしたので
参考にさせていただきます。
ありがとうございます。
Softya様
そちらのプロジェクトをそのまま使ってみたところ、なぜかエラーが表示されました。
その後、自分のプロジェクトにソースをコピー後、実行すると真っ黒な画面が表示されます。
BCC Developerの場合に限定ですが、画像はexeのあるフォルダに置いてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: LoadGraph~DrawGraphで画像が表示されません。
Softya様
表示されました!
BCC Developerの方で見落としてしまっていたんですね。
\単品ではつかわないのですね、コード書き方まで教えていただいて・・・
本当に助かりました。ありがとうございます。
表示されました!
BCC Developerの方で見落としてしまっていたんですね。
\単品ではつかわないのですね、コード書き方まで教えていただいて・・・
本当に助かりました。ありがとうございます。