【问题标题】:Resize image SDL/c++调整图像大小 SDL/c++
【发布时间】:2013-06-11 00:09:13
【问题描述】:

我有一张图片,我想缩小它,使它不是原来的大小。

SDL_Rect bulletRect;
bulletRect.x = 10;
bulletRect.y = 10;
bulletRect.w = 10;
bulletRect.h = 10;

SDL_Surface *bullet = IMG_Load("/Users/tonymichaelsen/Documents/documents/Xcode-projects/c++/c++/bullet.png");
Uint32 colorKeyBullet = SDL_MapRGB(bullet->format, 255, 255, 255);
SDL_SetColorKey(bullet, SDL_SRCCOLORKEY, colorKeyBullet);

Blitted:

if (drawBullet) //bool set to true in key event
{
    SDL_BlitSurface(bullet, NULL, screen, &bulletRect);
}
SDL_Flip(screen);

唯一改变的是当我改变子弹(图像)的 x,y 值时。当我改变 w,h 时它不会改变并且颜色键没有效果。
怎么了?

【问题讨论】:

标签: c++ sdl


【解决方案1】:

SDL_BlitSurface 不执行缩放,它要求目标大小等于源大小。

您可能想研究 SDL-OpenGL 集成,它允许您使用视频卡的纹理功能来重新缩放精灵。

【讨论】:

    【解决方案2】:

    您可以将其传递给具有所需大小的新矩形,而不是 NULL。 SDL_BlitSurface(bullet, NULL, screen, &bulletRect);

    int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);

    “srcrect中的宽高决定了复制矩形的大小。dstrect中只使用位置(宽高被忽略)。”

    这里解释了它是如何工作的:

    http://www.libsdl.org/docs/html/sdlblitsurface.html

    【讨论】:

    • 这将剪切源图像,而不是调整它的大小。
    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多