曾经,小小的我为了在游戏上显示文字,用了一张张图片……现在,解放啦!它就是 “SDL_ttf” 使用它,我们可以通过文字生成一个Surface,来看看怎么用的吧!
首先,包含字体扩展库
#include <SDL2/SDL.h>
初始化字体
// 初始化字体 TTF_Init();
定义一个字体库变量,用于加载字体文件
TTF_Font *font = NULL;
加载字体文件
//打开字体/* 字体路径 /*字体大小 font = TTF_OpenFont(FontsPath, FontSize);
如注释所说,第一个为字体路径,第二个为字体大小,字体路径在安卓平台上使用 "/system/fonts/DroidSansFallback.ttf" ,函数只支持TTF格式字体。
/*
*结构体原型
SDL_Color
{
Uint8 r,g,b,a;
};
*/
//字体颜色
SDL_Color color;
color.r = r;
color.g = g;
color.b = b;
color.a = a;
SDL_Surface *temp = NULL;
SDL_Texture *fonts = NULL;
// 绘制表面……字体编码为 UTF-8
temp = TTF_RenderUTF8_Blended(font, Fonts, color);在这里,我们使用了又一个新结构体SDL_Color用来储存RGBA颜色值,函数 TTF_RenderUTF8_Blended是将文字生成表面的一个函数之一(其他函数编码对中文支持不高,本函数支持UTF-8编码,不支持换行符等特殊字符),这个函数第一个参数为c风格字符串,是将创建的表面上的文字,第二个是文字的颜色,接受一个SDL_Color的颜色值,通过这个函数我们可以创建一个带文字的表面(Surface)
程序的最后……不要忘了退出字体……和关闭哦!
//释放字体 TTF_CloseFont(font); TTF_Quit();
SDL_ttf里还有更多函数,比如TTF_SetFontStyle设置字体style的,当然就不介绍了啦,我只是教简单渲染文字哎~有空大家去翻翻头文件,自己尝试吧。