DXライブラリを使用した画像表示について

このQ&Aのポイント
  • 初心者に向けたDXライブラリを使用した画像表示の問題についてまとめました。
  • Borland C++ 5.5.1, BCC Developer, DXライブラリを使用して画像を表示するプログラムを作成しましたが、画像が表示されない問題が発生しました。
  • ウィンドウは表示されていて実行できており、プログラムの記述に問題はないと考えられますが、画像の保存場所や使用しているOS(Windows Me)などが原因となっている可能性があります。
回答を見る
  • ベストアンサー

DXライブラリを使用した画像表示について

ゲームプログラミングを始めたいと考えている初心者です。 Borland C++ 5.5.1,BCC Developer,DXライブラリを使用しています。 下記のプログラムをメイクして実行すると、ウィンドウは表示されるのですが、画像が表示されません。画像の保存場所はプロジェクトの中のDebugフォルダです。どんな原因が考えられるでしょうか?ウィンドウは表示されていて実行できているのでプログラムの記述の問題ではないと考えます。 使用しているOSがMeです。Meではできないのでしょうか? お詳しい方、ぜひご回答お願いします。 ---------------------------------------------------------------- #include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; // ウインドウモードに変更 if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } /*--ここから下に処理を記述--*/ LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ; /*--ここまでが処理--*/ WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

noname#48747
noname#48747

質問者が選んだベストアンサー

  • ベストアンサー
noname#88356
noname#88356
回答No.1

debugフォルダ内の.exeファイルを実行した場合は画像は表示されますか? 開発中の実行時に画像を表示するには画像を保存する場所はそこではありません。 debugフォルダ内ではなくプロジェクトファイルが置いてある場所です。 DxLib.hと同じ階層にchar.pngを置いてみると上手くいくでしょう。 ソースは多分問題ないと思います。

noname#48747
質問者

お礼

迅速なご回答ありがとうございます。 上手くいきました。 本当にありがとうございます。

関連するQ&A

  • DXライブラリでの画像表示

    ゲームプログラミング初心者です。 DXライブラリを用いて画像を表示させようと以下のプログラムを組んで実行してみたのですが、ウィンドウは表示されるのに画像が表示されません。 使用しているのはBorland C++ 5.5.,BCC Developer,DXライブラリです。 ちゃんと画像もプロジェクトファイルの中に入っていると思います。 OSはwindows8です。 考えられる原因を教えてもらえないでしょうか。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) { return -1; } LoadGraphScreen(0,0,"image.png",TRUE); WaitKey(); DxLib_End(); return 0; }

  • Visual C++2008について

    Visual C++2008を使用してゲームを作ろうとしているのですが。 最初の設定がうまくいきません http://homepage2.nifty.com/natupaji/DxLib/ のサイトを見ながらDXライブラリもきちんと入れ とりあえず何かしら起動してみようと思い 先ほどのサイトにあったサンプルプログラム  画面左上から右下にかけて真っ白の線を描きます #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得 DrawLine( 0 , 0 , 640 , 480 , Cr ) ; // 線を描画 WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } を実行してみたのですが、場面が真っ暗になるだけで線が表示できませんでした デバックとビルドを見てみてもなんのエラーも起きてはいませんでした。 一体何が原因なんでしょうか? わかるかたがいれば、よろしければ教えてもらえないでしょうか。

  • C言語 DXライブラリ

    #include <math.h> #include "DxLib.h" #define PI 3.1415926f int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); int Handle[3]; LoadDivGraph( "画像/弾01.png", 3, 3, 1, 14, 16, Handle ); float x=320,y=240,angle=0,speed=1; while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){ x += cos( angle ) * speed; DrawRotaGraph( x, y, 1.0, angle+PI/2, Handle[0], TRUE ); } DxLib_End(); return 0; } これを実行すると画像が右に動いていくのですが、なぜ動くのかわかりません。 x += cos( angle ) * speed; の部分はx=320+0*1という事だと思っているのですが、これだとxはずっと320のままで画像が右に動いて行かないと思います。 教えてくださいm(_ _ )m

  • c言語勉強中でおかしなところがありまして私では解決できませんでした><

    このブログラムを実行したのですが 実行するとウィンドウが出てくるのはいいのですが 右上に120×120ピクセルの水色っぽい正方形が 映ってくれません キーを押したり ウィンドウ内をクリックすると 一瞬表示されるのですが ちゃんと表示されるには どうしたらいいのでしょうか?? どこかにミスがあるのであれば 指摘をお願いします 下記にあるのが そのプログラムです #include "DxLib.h" int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) { ChangeWindowMode(true); if(DxLib_Init() == -1) return(-1); DrawBox(0, 0, 120, 120, 65535, true); WaitKey(); DxLib_End(); return(0); }

  • DXライブラリの透過処理について

    #include "DxLib.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { ChangeWindowMode(TRUE); SetDrawScreen(DX_SCREEN_BACK); if(DxLib_Init()==1) { return -1; } char key[256]; // int haikei; int mapchip[2][152]; int i,j; //int x = 0, y = 0; //haikei = LoadGraph("haikei/草原.jpg"); LoadDivGraph("03.png",5,1,5,32,32,mapchip[0]); LoadDivGraph("mura.png",1,1,1,32,32,mapchip[1]); while(ScreenFlip()==0 && ProcessMessage() == 0 && GetHitKeyStateAll(key)==0) { // ClearDrawScreen(); // DrawGraph(x,y,haikei,FALSE); for(i = 0; i<15;i++) { for(j=0;j<20;j++) { DrawGraph(j*32,i*32,mapchip[0][4],FALSE); } } DrawGraph(32,32,mapchip[1][0],TRUE); /* if(CheckHitKey(KEY_INPUT_RIGHT) == 1) x+=10; if(CheckHitKey(KEY_INPUT_LEFT) == 1) x-=10; if(CheckHitKey(KEY_INPUT_UP) == 1) y-=10; if(CheckHitKey(KEY_INPUT_DOWN) == 1) y+=10; */ if(key[KEY_INPUT_ESCAPE] == 1) { DxLib_End(); return 0; } } } 「DrawGraph(32,32,mapchip[1][0],TRUE);」という処理でmura.pngの左上のカラーキーで透過するはずですがしません。 Win10のペイントで作ったpngファイル形式に対応してないかと思うのですが、よくわかりまえん。 なぜ?

  • 名前空間使用するには

    開発環境  XP Home Edition Microsoft Visual C++ 2008 Express Edition です。 #include "DxLib.h" #include <Windows.h> #include <string> #include <stdio.h> using namespace System; using namespace System::Data; using namespace System::Data::SqlClient; void in(){ String^ str; SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SOUTUKEN\\TEST.mdf;Integrated Security=True;User Instance=True"); sqlConn->Open(); str = "SELECT * FROM table1 "; //str= "INSERT INTO table1 (test) VALUES(3)"; SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn); SqlDataReader^ exeReader = sqlCmd->ExecuteReader(); while( exeReader->Read() ) { Diagnostics::Debug::WriteLine(exeReader["test"]->ToString()); } Diagnostics::Debug::WriteLine( "表示テスト %s \n"); sqlConn->Close(); } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } DxLib_End() ; // DXライブラリ使用の終了処理 in(); return 0 ; // ソフトの終了 } プロジェクトのプロパティはDxライブラリの設定にしています。 http://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html ここのサイトの通りにやっています。 知識不足なところもありますがお願いします。

  • 描画出力にあたって

    単純に直線や円などを画面に描画するプログラムなのですが 参考サイトの通りに記述しても画像や文字の出力は出来るのですが線や円の描画が出来ません。 指定した位置に線、円、四角形等を画面に描画するとき 下に表記したソースに足りない宣言とかありましたら教えてください よろしくお願いします #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE) ; if( DxLib_Init() == -1) return -1; int white,red,g_blue; white = GetColor(255,255,255); red = GetColor(255,0,0); g_blue = GetColor(0,255,255); DrawLine(10,10,630,10,white); DrawBox(10,50,310,100,g_blue,false); DrawBox(10,150,310,200,g_blue,true); DrawCircle(500,300,100,red,true); WaitKey(); DxLib_End(); return 0; } なお参考にしたサイトは http://l.huu.cc/g/#0 です

  • DXライブラリについて

    今、DXライブラリを使ってのゲーム制作をしています。 以前は、DrectXを使っての3Dゲーム制作を行っていたのですが、objectの配置の際に、Finalize関数を使って解放しないとメモリ破壊を起こすというのを学習しました。 今回のDXライブラリにおいても、同じような処理を施さなければならないのでしょうか? というのも。 適当に組んだプログラム(画像をいくつか読み込ませたうえ、キーボードで操作できるようなもの)をF5を押したまま数秒放置していたらブルースクリーン?が出てきて電源を強制終了する羽目になったので、今、怖くて触れない状況なのです。 (一応念のため補足)・・・DxLib_End(); は、打ち込んであります。 どなたか回答をお願い申し上げます。

  • 異なるソリューションの連結について教えてください。

    プログラミング初心者です。 開発環境 OS  XP HomeEdition Visual C++ Express Edition ソリューションAのCPPファイル #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } ソリューションBのCPPファイル #include "stdafx.h" #include <stdio.h> #include <windows.h> #include <string> using namespace System; using namespace System::Data; using namespace System::Data::SqlClient; int main(void){ String^ str; SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SOUTUKEN\\TEST.mdf;Integrated Security=True;User Instance=True"); sqlConn->Open(); str = "SELECT * FROM table1 "; //str= "INSERT INTO table1 (test) VALUES(3)"; SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn); SqlDataReader^ exeReader = sqlCmd->ExecuteReader(); while( exeReader->Read() ) { System::Diagnostics::Debug::WriteLine(exeReader["test"]->ToString()); } sqlConn->Close(); } です。ソリューション間の連結するのはどうしたらいいですか?

  • DxLibについて質問です

    DxLibを使ったプログラムがコンパイルできません。 下がそのプログラムです #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) { return -1; } DrawBox(100,100,300,300,GetColor(255,255,255),TRUE); WaitKey(); DxLib_End(); return 0; } http://p.booklog.jp/book/46490/chapter/77396 このサイトに従って、DXライブラリを使うセットアップをしたのですが、 下のようなエラーコードが出てきます。 ■C:\Users\masaki\Desktop\C> bcc32 windows.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland windows.cpp: 警告 W8022 C:\borland\bcc55\Include\DxDirectX.h 6121: 'D_CTransInPlaceFilter::Transform(D_IMediaSample *)' が仮想関数 'D_CTransformFilter::Transform(D_IMediaSample *,D_IMediaSample *)' を隠蔽する 警告 W8094 C:\borland\bcc55\Include\DxLib.h 100: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8094 C:\borland\bcc55\Include\DxLib.h 101: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8094 C:\borland\bcc55\Include\DxLib.h 102: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8057 windows.cpp 13: パラメータ 'hInstance' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'hPrevInstance' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'lpCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'nCmdShow' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: ファイル SHELL32.LIB が開けません shell32.libが開けないとあり、自分でも調べたのですが、自分にはその内容が理解できず、このサイトに質問を投稿しました。 コンパイラは、Borland C++ Compiler 5.5.1 OSは、Windows 7 Ultimate エディタは、CPad for Borland C++ Compiler ver.2.3.1 です。 よろしくお願いします。

専門家に質問してみよう