调整图像SDL / c ++的大小

时间:2013-06-10 15:20:49

标签: c++ sdl

我有一张图片,我想将其缩小以使其不是原始尺寸。

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);

图混合:

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

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

2 个答案:

答案 0 :(得分:2)

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

您可能希望了解SDL-OpenGL集成,这将允许您使用视频卡的纹理功能来重新调整精灵。

答案 1 :(得分:1)

而不是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