1、利用第四节课的代码,修改部分,如下图红色标记。
2、第15行通过调整文字的显示的坐标,使它尽可能位于屏幕中央,方便观察。第17行SDL_Point变量point存储一个二维点的坐番舸榆毛标。它有两个成员变量point.x和point.y。我将用它作为文字旋转的中心。
3、第21行SDL_RenderCopyEx是SDL_RenderCopy的拓展函数,通过对比,多了后面三个参数。其中-10的秽煅笛琐负号表示旋转方向(逆时针),正号表示顺时针,而10表示角度。&point表示文字绕这个点旋转。最后一个参数表示翻转的类型:无翻转、左右翻转、上下翻转。让我们看看运行结果如何,如下图。
4、我们再看看左右翻转的效果。(旋转+左右翻转)
5、看看上下翻转的效果。(旋转+上下翻转)
6、代码:#include<SDL2/SDL.h>#include<SDL2/SDL_ttf.茑霁酌绡h>intmain(intargc,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_Colorcolor={255,255,255,255};SDL_Surface*surface=TTF_RenderUTF8_Blended(font,"测试",color);TTF_CloseFont(font);TTF_Quit();SDL_Rectbox={150,400,surface->w,surface->h};SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);SDL_Pointpoint={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();}