画像が表示されません。
PCはWin10 home,開発環境はVisual Studio 2015 Professionalで、c++を使用しています。
画像情報を保存するImageというクラスを自作し、使っています。(以下の通り、実際に動かなかったコードから、使用していないものを省いています。)
Image.h
コード:
#pragma once
#include "DxLib.h"
class Image {
private:
int handle,px, py;
public:
Image();
Image(const char* const pass);
~Image();
int Draw();
void move();
};
Image.cpp
コード:
#include "Image.h"
Image::Image() : handle(NULL), px(0), py(0){
}
Image::Image(const char* const pass) : Image() {
handle = LoadGraph(pass);
}
Image::~Image() {
DeleteGraph(handle);
}
int Image::Draw() {
DrawGraph(px,py, handle, TRUE);
return 0;
}
void Image::move() {
px++;
}
さらに、Imageクラスのインスタンスを1つメンバー変数に持ち、これを自動で動かしながら表示するクラスMoveImageを作成しました。(こちらも簡略化しています。)
MoveImage.h
コード:
#pragma once
#include "Image.h"
class MoveImage {
private:
Image img;
public:
MoveImage();
MoveImage(const char* const pass);
~MoveImage();
int Draw();
};
MoveImage.cpp
コード:
#include "MoveImage.h"
MoveImage::MoveImage() {
img = Image();
}
MoveImage::MoveImage(const char* const pass){
img= Image(pass);
}
MoveImage::~MoveImage() {
}
int MoveImage::Draw() {
img.move();
img.Draw();
return 0;
}
これらのクラスを使おうとしたところ、Imageは正しく表示されましたが、MoveImageが表示されません。
表示したコードは以下の通りです。
Main.cpp
コード:
#include "DxLib.h"
#include "Image.h"
#include "MoveImage.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
SetGraphMode(640,480,32);
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
Image img("res/image/gazou.png");
MoveImage move("res/image/gazou.png");
while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {
img.Draw();
move.Draw();
}
DxLib_End(); //おしまい
}
これを行うと、下のように初めに左上に画像が表示されて、それが右に動いていくはずなのですが、動くはずの画像が表示されないのです。
○
○ ○
○ ○
○ ○
○ ○
↑Image ↑MoveImage
どこが悪いのかわかりませんが、Imageクラスをメンバーに持つと、それが表示できないのです。
画像ハンドルには0でない数値がきちんと入っているので、LoadGraph出来ていないということはないと思います。
また、調べてみて多かったビット深度の問題も確認しました。(そもそもImageは表示できるので、そこは大丈夫だと思います。)
不足している情報があればお教えください。長文失礼いたしました。よろしくお願いします。