画像表示の質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
であ

画像表示の質問

#1

投稿記事 by であ » 13年前

画像を表示の所で表示出来ないのですがどうすれば良いのでしょうか?

イラスタで描いた絵をpng形式にしてデスクトップで適当に作ったフォルダに保存したのですが・・・・・・保存した場所が悪いのでしょうか?


LoadGraphScreen( 50, 100, "画像/キャラクタ00.png", TRUE ); // 画像を描画する

のキャラクタ00.pngを一緒の名前にしても実行画面は暗いまま

どうすれば画像表示が出来ますか?お願い致します

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 画像表示の質問

#2

投稿記事 by beatle » 13年前

であ さんが書きました:イラスタで描いた絵をpng形式にしてデスクトップで適当に作ったフォルダに保存したのですが・・・・・・保存した場所が悪いのでしょうか?
はい、まさにその通りです。

"画像/キャラクタ00.png"
というのは重要な情報でして
「カレントディレクトリ」の中の「画像」ディレクトリの中の「キャラクタ00.png」というファイル
を指します。

ディレクトリはフォルダと読み替えていただいてもいいでしょう。
カレントディレクトリというのは、プログラムが現在動作しているディレクトリのことです。

ファイルの場所を示すには2通りのやり方があります。まず絶対位置というやり方です。
C:\Users\Public\Desktop
こんなやり方。次に相対位置というやり方です。
Public\Desktop

絶対位置は常に同じ物を指し示すのですが、相対位置はカレントディレクトリによって、指し示す物が異なります。
例えばカレントディレクトリが「C:\Users」だったとしましょう。このとき「Public\Desktop」は
C:\Users\Public\Desktop
を指します。今度はカレントディレクトリが「C:」だったとしましょう。このとき「Public\Desktop」は
C:\Public\Desktop
を指します。

「画像/キャラクタ00.png」で正しく画像ファイルを読み込むには、プログラム実行時のカレントディレクトリが何処になるかを正確に把握しておく必要があるのです。
状況によって変わるのですが、例えば Visual C++ 上から実行するのであれば vcproj ファイルがある位置がカレントディレクトリとなるようです。
exeファイルをダブルクリックなどで起動した場合は、そのexeファイルのある位置がカレントディレクトリとなります。
ということで、適切なカレントディレクトリに画像ファイルを移動させるのが解決策1です。

解決策2は、ファイル名の指定を絶対位置に変更することです。
"C:/Users/であ/Desktop/画像/キャラクタ00.png"
のようにすればいいのです。(もちろん、あなたのパソコンでの表記に直してくださいね)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 画像表示の質問

#3

投稿記事 by みけCAT » 13年前

参考として、カレントディレクトリをexeファイルのあるディレクトリに変更する関数をどうぞ。

コード:

void setCurDirToExeDir(void) {
	char folder[1024];
	int i,j,len;
	GetModuleFileName(NULL,(CHAR*)folder,sizeof(folder));
	len=lstrlen(folder);
	j=len-1;
	for(i=0;i<len;i++) {
		if(folder[i] & 0x80)i++;
		else if(folder[i]=='\\')j=i;
	}
	if(j<3)folder[j+1]=0; else folder[j]=0;
	SetCurrentDirectory(folder);
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

であ

Re: 画像表示の質問

#4

投稿記事 by であ » 13年前

なんとか画像の表示に成功しました

質問に答えて下さりありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る