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

texture可由图片或文字转换而来。

texture旋转是根据某个点按照一定的角度进行旋转。

texture翻转分为无翻转、左右翻转、上下翻转。

这里我就用文字texture来进行说明。

工具/原料

  • c4droid、sdl插件
  • 字体文件:DroidSansFallback.ttf

方法/步骤

  1. 1

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

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

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

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

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

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

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

    SDL2入门(七)实现texture的旋转和翻转
    SDL2入门(七)实现texture的旋转和翻转
  4. 3
    此文章未经许可获取自百度经验
  5. 4

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

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

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

    SDL2入门(七)实现texture的旋转和翻转
    SDL2入门(七)实现texture的旋转和翻转
  7. 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();

    }

    END

注意事项

  • c4droid版本:5.96
  • 如有不足或建议欢迎指正。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签编程编程语言