简单渲染文字

曾经,小小的我为了在游戏上显示文字,用了一张张图片……现在,解放啦!它就是 “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的,当然就不介绍了啦,我只是教简单渲染文字哎~有空大家去翻翻头文件,自己尝试吧。

code 上一节 目录 下一节 回到顶部
Copyright © 2014 冯世昌 保留所有权利