ページ 11

Release構成にしてフォルダをデスクトップにコピーしてもjpgが表示されない

Posted: 2012年4月13日(金) 21:59
by kaz
DxLibを使っているのですがRelease構成にしてフォルダをデスクトップにコピーしてもjpgが表示されません。

最初EXEファイルと画像ファイルだけをデスクトップにコピーして実行したらbmpは表示されるのですが、jpgは表示できませんでした。
その後Releaseフォルダ全部をデスクトップにコピーしましたがやはり表示されません。
どうしたら表示できますか?

Re: Release構成にしてフォルダをデスクトップにコピーしてもjpgが表示されない

Posted: 2012年4月14日(土) 00:31
by ぱにしん
そうですね、画像を読み込まれている部分があると思いますが、その部分を出して頂ければ分かると思うのですが・・・

その二つの画像ファイル、もともと違う階層に入っていませんか?
releaseフォルダの中に画像が入っているとは考えにくいので、とりあえずプロジェクトファイルがあるフォルダにexeファイルを入れてみてください。
その構成で正常に動くようならば、その構成で他のフォルダにコピーされれば問題なく動くと思いますよ。

Re: Release構成にしてフォルダをデスクトップにコピーしてもjpgが表示されない

Posted: 2012年4月14日(土) 09:38
by kaz
このようなクラスを作って使っているですが…
どこがまずいのでしょうか?

コード:



#pragma once
class Cpicture{
public:
	Cpicture(void);
	Cpicture(char* filename);
	~Cpicture(void);
	bool load(char* filenme);
	bool loaded(void);
	bool clear(void);
	void draw(int pos_x , int pos_y);
	void draw(C_2d_vector pos);
	void center_draw(int pos_x , int pos_y);
	void center_draw(C_2d_vector pos);
	void GetSize(int* Xbuf , int* Ybuf);
private:
	int picsize_x;
	int picsize_y;
	int gh;
};

Cpicture::Cpicture(void){
	gh=-1;
}
Cpicture::Cpicture(char* filename){
	gh=LoadGraph(filename);
	if(gh==-1) return;
	GetGraphSize(gh,&picsize_x,&picsize_y);
	return;
}
Cpicture::~Cpicture(){
	DeleteGraph(gh);
	return;
}
bool Cpicture::load(char* filename){
	if(gh!=-1) DeleteGraph(gh);
	gh=LoadGraph(filename);
	if(gh==-1) return false;
	GetGraphSize(gh,&picsize_x,&picsize_y);
	return true;
}

bool Cpicture::loaded(void){
	if(gh==-1) return false;
	return true;
}

bool Cpicture::clear(void){
	if(DeleteGraph(gh)==-1) return false;
	gh=-1;
	return true;
}
void Cpicture::draw(int pos_x,int pos_y){
	DrawGraph( pos_x , pos_y , gh , TRUE);
	return;
}

void Cpicture::draw(C_2d_vector pos){
	DrawGraph( (int)pos.x , (int)pos.y , gh , TRUE);
	return;
}

void Cpicture::center_draw(int pos_x,int pos_y){
	DrawGraph( (int)pos_x-(picsize_x/2),(int)pos_y-(picsize_y/2),gh,TRUE);
}

void Cpicture::center_draw(C_2d_vector pos){
	DrawGraph( (int)pos.x-(picsize_x/2),(int)pos.y-(picsize_y/2),gh,TRUE);
	return;
}

void Cpicture::GetSize(int *Xbuf, int *Ybuf){
	*Xbuf=picsize_x;
	*Ybuf=picsize_y;
	return;
}


Re: Release構成にしてフォルダをデスクトップにコピーしてもjpgが表示されない

Posted: 2012年4月14日(土) 10:06
by beatle
ポイントはCpicture::load関数にどんな文字列を渡しているかですね。
exeファイルと同じディレクトリに画像ファイルがあるなら、"hoge.jpg"を渡せばいいし、exeファイルと同じディレクトリにあるimagesという名のディレクトリに画像ファイルがあるなら、"images\hoge.jpg"を渡せばいいでしょうね。
Visual C++上から実行した場合とexeファイルをダブルクリックして実行した場合で、カレントディレクトリが変わるのがクセモノですよね。

Re: Release構成にしてフォルダをデスクトップにコピーしてもjpgが表示されない

Posted: 2012年4月14日(土) 11:02
by softya(ソフト屋)
マルチポストですので、フォーラムルールに則って相互リンクをお願いします。
詳しくはフォーラムルールをご覧ください。 http://dixq.net/board/board.html
「DxLibを使っているのですがjpgが表示されない - C・C++ - 教えて!goo」
http://oshiete.goo.ne.jp/qa/7419607.html