現在、次のようなボタン クラスを作成しようとしています。
void Button::apply_image(std::string path) {
SDL_Surface* loaded_image = NULL;
loaded_image = IMG_Load(path.c_str());
m_button_image = SDL_DisplayFormat(loaded_image);
SDL_FreeSurface(loaded_image);
}
void Button::show(SDL_Surface* screen) {
SDL_BlitSurface(m_button_image, NULL, screen, &m_box);
}
クラスを使用するときは、次のことを行います。
Button button1(0,0,50,50);
button1.apply_image("images/cards/1.png");
SDL_Surface* screen = NULL;
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
SDL_WM_SetCaption("House Of Cards", NULL);
button1.show(screen);
SDL_Flip(screen);
私の問題は、使用すると画像が表示されないことですがSDL_DisplayFormat(loaded_image);
、その行とSDL_FreeSurface(loaded_image);
. 次に、画像に変更loaded_image = IMG_load(path.c_str());
しm_button_image = IMG_Load(path.c_str());
て表示します。DisplayFormat()を呼び出さないと画像が表示されるため、パスが明らかに正しいため、何か間違っていますか?gdb を使用すると、m_button_image が NULL になり、その理由がわかりません。なぜなら、gdb は、loaded_image が SDL_Surface* を指していることも示しているからです。