SDL2入门(七)实现texture的旋转和翻转

2025-10-03 18:14:32

1、利用第四节课的代码,修改部分,如下图红色标记。

SDL2入门(七)实现texture的旋转和翻转

SDL2入门(七)实现texture的旋转和翻转

2、第15行通过调整文字的显示的坐标,使它尽可能位于屏幕中央,方便观察。

第17行SDL_Point变量point存储一个二维点的坐标。它有两个成员变量point.x和point.y。我将用它作为文字旋转的中心。

SDL2入门(七)实现texture的旋转和翻转

3、第21行SDL_RenderCopyEx是SDL_RenderCopy的拓展函数,通过对比,多了后面三个参数。其中-10的负号表示旋转方向(逆时针),正号表示顺时针,而10表示角度。&point表示文字绕这个点旋转。最后一个参数表示翻转的类型:无翻转、左右翻转、上下翻转。

让我们看看运行结果如何,如下图。

SDL2入门(七)实现texture的旋转和翻转

SDL2入门(七)实现texture的旋转和翻转

4、我们再看看左右翻转的效果。(旋转+左右翻转)

SDL2入门(七)实现texture的旋转和翻转

SDL2入门(七)实现texture的旋转和翻转

5、看看上下翻转的效果。(旋转+上下翻转)

SDL2入门(七)实现texture的旋转和翻转

SDL2入门(七)实现texture的旋转和翻转

6、代码:

#include <SDL2/SDL.h>

#include <SDL2/SDL_ttf.h>

int main(int argc,char**argv)

{

SDL_Init(SDL_INIT_VIDEO);

SDL_Window*window=SDL_CreateWindow("texture旋转和翻转", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 720, 1280, SDL_WINDOW_SHOWN);

SDL_Renderer*renderer=SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

SDL_RenderClear(renderer);

TTF_Init();

TTF_Font*font=TTF_OpenFont("resource/DroidSansFallback.ttf",200);

SDL_Color color={255, 255, 255, 255};

SDL_Surface*surface=TTF_RenderUTF8_Blended(font,"测试",color);

TTF_CloseFont(font);

TTF_Quit();

SDL_Rect box={150, 400, surface->w, surface->h};

SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer, surface);

SDL_Point point={0, 0};

//SDL_FLIP_NONE:无翻转

//SDL_FLIP_HORIZONTAL:左右翻转

//SDL_FLIP_VERTICAL:上下翻转

SDL_RenderCopyEx(renderer, texture, NULL, &box, -10, &point, SDL_FLIP_VERTICAL);

SDL_RenderPresent(renderer);

SDL_Delay(6000);

SDL_FreeSurface(surface);

SDL_DestroyTexture(texture);

SDL_DestroyRenderer(renderer);

SDL_DestroyWindow(window);

SDL_Quit();

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:151
  • 阅读量:22
  • 阅读量:108
  • 阅读量:78
  • 阅读量:61
  • 猜你喜欢