SDL2入门(四)显示文字

2025-10-19 02:43:06

1、这里只解释修改的代码,若想了解其余代码,请查看上一节课。

首先准备ttf文件,因为我们将要用它来显示文字,我这里准备了DroidSansFallback.ttf 文件。

SDL2入门(四)显示文字

SDL2入门(四)显示文字

2、首先我们引用拓展库SDL_ttf.h头文件。

SDL2入门(四)显示文字

3、之后用TTF_Init来初始化字体。

然后用TTF_Font创建的指针变量加载字体文件,TTF_OpenFont的参数:第一个为字体路径、第二个为字体大小。返回一个指针。

注意:TTF_Font只能加载ttf字体文件和支持UTF-8编码,不支持换行符等特殊字符。

SDL2入门(四)显示文字

4、这里的SDL_Color存储着字体的颜色,它有四个成员变量:r、g、b、a,分别是红(red)、绿(green)、蓝(blue)、透明(alpha)。

我把字体设置成白色不透明,即r:255,g:255,b:255,a:255。

SDL2入门(四)显示文字

5、利用TTF_RenderUTF8_Blended可以将字符串转换成SDL_Surface的指针变量,函数参数:第一个是TTF_Font指针变量、第二个是字符串、第三个是SDL_Color变量。

SDL2入门(四)显示文字

6、最后别忘了处理释放内存的工作。

SDL2入门(四)显示文字

7、运行结果:

SDL2入门(四)显示文字

8、代码:

#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("显示文字", 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",100);

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

SDL_Surface*surface=TTF_RenderUTF8_Blended(font,"english  中文",color);

TTF_CloseFont(font);

TTF_Quit();

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

SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer, surface);

SDL_RenderCopy(renderer, texture, NULL, &box);

SDL_RenderPresent(renderer);

SDL_Delay(2000);

SDL_FreeSurface(surface);

SDL_DestroyTexture(texture);

SDL_DestroyRenderer(renderer);

SDL_DestroyWindow(window);

SDL_Quit();

}

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