【问题标题】:How to change an images size in c++, SDL如何在 C++、SDL 中更改图像大小
【发布时间】:2015-01-26 05:47:12
【问题描述】:

如何在下面的代码中更改图像大小:

const int XHome = 10, YHome = 10;
const int WHome = 50, HHome = 50;
.
.
.

SDL_Surface* Image = SDL_LoadBMP(Address);

SDL_Rect destRect;

destRect.x = WHome * x; 
destRect.y = HHome * y; 
destRect.w = WHome;
destRect.h = HHome;

SDL_BlitSurface(Image, NULL, mainScreen, &destRect);

SDL_FreeSurface(Image);

当我将Image 放入另一个SDL_SurfacemainScreen 时,它大于50*50。是否可以调整Image 的大小?谢谢。


这就是我将 WHome 和 HHome 设置为 50*50 时发生的情况。
由于我只有 5 个声望,我无法发布图片。查看图片请点击here

但是当我将它们设置为原始图像大小时,我看到的是:
here

【问题讨论】:

  • “更大”是什么意思?它渲染的尺寸是多少?您的目标矩形应指定大小;似乎是对的。您是否尝试过更改 WHome 和 HHome?顺便说一句,如果您使用的是 SDL2,您应该为您的图像使用 SDL_Texture 而不是表面。当您通过 SDL_RenderCopy 渲染时,您将获得硬件加速,并且可以像使用 blitting 一样指定目标大小。
  • 我认为它会调整图像大小。但它没有。我很快就会设置图像。

标签: c++ image sdl


【解决方案1】:

根据 SDL_BlitSurface 文档:

在 dstrect 中仅使用位置(忽略宽度和高度)。

出于多种原因,我强烈建议切换到 SDL 2(硬件加速很重要);对于纹理和SDL_RenderCopy,此任务也将变得微不足道。如果您在使用 SDL 1 时遇到问题,您可以手动查看缩放表面,或者使用像 SDL_gfx 这样的库,它具有自定义 blit 函数。

【讨论】:

  • 我必须使用 SDL 1 所以我使用了 SDL_gfx。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 2014-10-31
  • 2021-12-16
  • 2019-12-05
  • 2021-12-19
  • 1970-01-01
  • 2013-05-04
相关资源
最近更新 更多