C++ 使用SDL#u gfx以特定大小C+调整图像大小+;

C++ 使用SDL#u gfx以特定大小C+调整图像大小+;,c++,image,resize,sdl,C++,Image,Resize,Sdl,我正在使用SDL_gfx尝试调整图像大小,但我真的无法完成 我的情况是: SDL_Surface* screen = SDL_SetVideoMode(0,0,32,SDL_FULLSCREEN); 我还有一个: SDL_Surface* back_img = SDL_Load("back.jpg"); 如你所见,我将视频模式设置为全屏模式,因此不同电脑的屏幕大小会有所不同。我想找到一种方法使其与屏幕匹配,但我有两个主要问题 screen->w和screen->h返回一个假值 我无法将图像大

我正在使用SDL_gfx尝试调整图像大小,但我真的无法完成

我的情况是:

SDL_Surface* screen = SDL_SetVideoMode(0,0,32,SDL_FULLSCREEN);
我还有一个:

SDL_Surface* back_img = SDL_Load("back.jpg");
如你所见,我将视频模式设置为全屏模式,因此不同电脑的屏幕大小会有所不同。我想找到一种方法使其与屏幕匹配,但我有两个主要问题

  • screen->w
    screen->h
    返回一个假值
  • 我无法将图像大小调整为所需的特定大小

  • 有什么帮助吗?

    您的
    屏幕->w
    值返回0,因为您使用
    SDL\u SetVideoMode(0,0,
    将它们设置为一些适当的值,如
    SDL\u SetVideoMode(800600,32,SDL\u全屏);
    您可以稍后使用不同的参数再次调用函数来更改它们



    注意:设置SDL fullscreen将自动调整图像大小并拉伸图像以适应屏幕。

    您可以使用SDL\u VideoInfo获得当前分辨率。请参阅下面的代码:

    const SDL_VideoInfo *info = SDL_GetVideoInfo();
    SDL_Surface *screen = SDL_SetVideoMode( info->current_w, info->current_h, 32, SDL_FULLSCREEN );
    

    现在,您的屏幕分辨率将与每台电脑的分辨率相匹配。

    因此您建议这样做:SDL\u BlitSurface(back\u img,&rect,screen,NULL);screen=SDL\u SetVideoMode(800、600、32、SDL\u全屏);然后让SDL播放我的图像?类似的。当然,如果你的引擎支持,你可以在启动游戏时更改分辨率以适应桌面分辨率。但是让SDL_设置视频模式播放我的背景图像是不现实的!每次我想拉伸图像时,我都必须重新调用SDL_设置视频模式……这不现实e意识到你误解了,你设置了SDL\u SetVideoMode一次,我建议你看两本SDL教程并尝试一下。我对SDL有基本的了解(闪烁图像、渲染文本、绘制矩形等等)。这只是我第一次认真参与分辨率和大小调整……)