Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调整图像SDL/c的大小++;_C++_Sdl - Fatal编程技术网

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

C++ 调整图像SDL/c的大小++;,c++,sdl,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 colorKeyBul

我有一个图像,我想缩小它,使它不是原来的大小

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时,它不会改变,而且颜色键没有效果
怎么了?

您可以传递一个具有所需大小的新rect,而不是NULL。 SDL_BlitSurface(项目符号、空值、屏幕和项目符号矩形)

int SDL_BlitSurface(SDL_Surface*src,SDL_Rect*srcret,SDL_Surface*dst,SDL_Rect*dstret)

“srrect中的宽度和高度决定复制矩形的大小。在dsrect中只使用位置(宽度和高度被忽略)。”

这里解释了它的工作原理:


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


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

这将剪辑源图像,而不是调整其大小。可能会重复