繁体   English   中英

调整图片大小SDL / c ++

[英]Resize image SDL/c++

我有一张图片,我想按比例缩小它,而不是原来的尺寸。

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,h时,它不变,并且颜色键无效。
怎么了?

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

您可能需要研究SDL-OpenGL集成,这将使您可以使用视频卡的纹理处理功能来调整Sprite的大小。

可以使用所需大小的新rect代替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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM