所以我最近下载了SDL_2库和所有组件,并希望创建一个简单的GUI / UI,其中有一个带有图片的“按钮”。我查了几个指南,我也复制并重写了很多代码。但是我发现最新的代码示例是在C中,它不包含任何类,而且非常混乱。所以我把它改写成C ++但由于某种原因,它不想加载图像。
我故意不发布任何析构函数或任何我99%确定不会导致问题的函数。对于帖子,为了不太长,我相信错误是在const void clear函数中,但我不确定。
为什么有任何想法?一直试图解决这个问题很长一段时间,谢谢你的任何建议/帮助:)
window.h中:
#pragma once
#include <SDL.h>
class Window
{
public:
Window(const char* title, int width, int height);
~Window();
void getEvents();
const void clear();
inline const bool isClosed() { return _closed; }
private:
const char* _title = "SDL_6";
int _width = 480;
int _height = 720;
bool _closed = false;
bool init();
SDL_Window *_window = nullptr;
SDL_Renderer *_renderer = nullptr;
SDL_Surface *_surface = nullptr;
};
Window.cpp:
#include "Window.h"
#include <iostream>
#include <SDL_image.h>
#define IMG_PATH "D:\\Picture\\Bowser\\star.jpg"
Window::Window(const char *title, int width, int height) :
_title(title), _width(width), _height(height)
{
_closed = !init();
}
const void Window::clear()
{
int w = 120;
int h = 120;
SDL_Texture *img = NULL;
SDL_Rect texr;
texr.x = 120;
texr.y = 120;
texr.h = 120;
texr.w = 120;
const char* file = "D:\\Pictures\\bowser\\star.jpg";
SDL_Surface *IMG_Load(const char* file);
SDL_RenderClear(_renderer);
SDL_RenderCopy(_renderer, img, NULL, &texr);
img = IMG_LoadTexture(_renderer, IMG_PATH);
SDL_QueryTexture(img, NULL, NULL, &w, &h);
SDL_RenderPresent(_renderer);
}
的main.cpp
#include "Window.h"
int main(int argc, char* argv[])
{
Window window("SDL_6", 720, 480);
while (!window.isClosed())
{
window.getEvents();
window.clear();
}
return 0;
}
答案 0 :(得分:0)
所以答案是不要声明: SDL_Surface IMG_Load(const char 文件);但要改为调用它,也改变了:const void Window :: clear()函数中代码的顺序。谢谢你答案O'Neil: - )