例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色。设程序名为9-7.c,存放在/home/cx/下。
准备工作:把windows下C:\WINDOWS\Fonts中的simsun.ttc文件拷贝到Linux下的/usr/share/fonts/下,用于显示中文。
编辑源程序代码:

 #include <SDL.h>
#include <stdlib.h>
#include <SDL_ttf.h>
int main()
{
SDL_Surface *text, *screen; //一个屏幕指针
SDL_Rect drect; //目标矩形
TTF_Font *Nfont; //文字样式对象
SDL_Color red={ , , , }; //设置字体颜色
int fontsize=; //设置字体大小
if(SDL_Init(SDL_INIT_VIDEO) < ){ //初始化视频子系统失败
fprintf(stderr,"无法初始化:%s\n",SDL_GetError()); //不能用printf(),因为没有包含stdio.h头文件
exit();
}
//设置视频模式
screen=SDL_SetVideoMode(,,,SDL_SWSURFACE);
if(screen==NULL){
fprintf(stderr,"无法设置视频模式:%s\n",SDL_GetError());
exit();
}
atexit(SDL_Quit); //退出 if(TTF_Init()!=){ //初始化字体
fprintf(stderr,"Can't init ttf font!\n");
exit();
} //打开字体库
Nfont=TTF_OpenFont("/usr/share/fonts/simsun.ttc",fontsize);
TTF_SetFontStyle(Nfont,TTF_STYLE_NORMAL); //设置字体样式
text=TTF_RenderUTF8_Blended(Nfont, "Linux下TureType显示示例",red);
TTF_CloseFont(Nfont); //关闭字体库
TTF_Quit(); //退出
drect.x=; //在点(240,160)处开始写
drect.y=;
drect.w=text->w; //目标矩形的宽和高分别是所写字体的宽和高
drect.h=text->h;
SDL_BlitSurface(text, NULL, screen, &drect); //把目标对象快速转化
SDL_UpdateRect(screen,,,,); //更新整个屏幕
SDL_FreeSurface(text); //释放写有文字的surface
SDL_Delay(); //让屏幕停留5秒钟的时间 return ;
}

SDL做文字显示在编译链接的时候记得要加上  -I /usr/include/SDL/ -lSDL -lSDL_ttf -lpthread 啊

特别是 -lSDL_ttf ,否则会报类似 undefined reference to `TTF_Init' 类似的错误

如果第29行  Nfont=TTF_OpenFont("/usr/share/fonts/simsun.ttc",fontsize); 换成 Nfont=TTF_OpenFont("/usr/share/fonts/georgiai.ttc",fontsize); 即Windows下的另一种字体,编译能通过,但运行时会报段错误

另:atexit(SDL_Quit);的作用是在程序退出时调用SDL_Quit()函数,这样就不必在每个要退出的地方都调用SDL_Quit()。

最后写出来的程序运行如下

SDL系列之 - 字体显示测试的更多相关文章

  1. ubuntu16安装navicat字体显示不正常,显示方框以及字体倒立

    昨天遇到了这个问题,网上找了很多方法都没有真正解决这个问题. 目前其他博客论坛说的主要方法有 1)将安装目录下的./start_navicat中的字符集改为zh_CN.UTF-8 2)将系统的默认字符 ...

  2. 解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题

    解决苹果手机 Safari浏览器下   字体显示为蓝色的 问题 近期测试同学测试,wap站上,底部文字在苹果8上面 ,使用 Safari浏览器打开,一直显示 蓝色字体 其他正常,寻找半天无解,最后 阳 ...

  3. python: HTML之 鼠标放上去下拉项字体显示不同颜色

    鼠标放上去下拉项字体显示不同颜色 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h ...

  4. CAD字体显示问号的解决办法

    CAD字体显示问号的解决办法1.选中问号的文字,ctrl+1查看下文字样式,以standard为例.2.运行st命令,设置standard样式的字体名为windows自带的ttf字体,例如宋体或者仿宋 ...

  5. 关于JAVA应用中文字体显示小方框的问题解决

    最近碰到linux下jboss应用中中文字体显示为小方框: “在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts目录下的字体.链接或复制宋体或微软雅黑 ...

  6. postman6 在Linux中,body和response字体显示不正常的解决方法

    在Linux中,postman的body和response使用的默认字体如果没有安装的话,会导致字体和光标的位置不一致,例如字体显示长度只有30,而光标在70的位置,导致编辑困难. 经查找css的定义 ...

  7. 解决Android版Firefox字体显示过大的问题

    在用Android版Firefox查看博客园首页发现中间区域的字体显示非常大,开始以为是首页css对移动版浏览器支持不好. 后来发现原来这是Firefox for Android的知名bug: Tha ...

  8. html lang="zh-cn"解决Mac版Firefox中文字体显示问题

    这两天在Mac下被Firefox的中文字体显示问题所困扰.在Firefox中将Sans-serif字体设置为SimSun-ExtB(新宋体)或英文字体(这时会用Mac默认中文字体),如下图: 浏览园子 ...

  9. C# JackLib系列之字体使用

    字体的使用一般我们都是使用系统字体,这样比较方便,直接 Font font=new Font("微软雅黑",16f,FontStyle.Bold); 但是当我们用到一个系统没有的字 ...

随机推荐

  1. MySql常见的错误

    一些MySql运行中遇到的错误总结,大家也可以留言进行我进行汇总. 一.Unknown error 1146 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxEr ...

  2. Python编译源文件& 代码优化

    编译源文件 代码优化 都能运行

  3. 为IIS服务器配置SSL,并设置为默认使用https协议访问网站

    要使网站支持https协议,需要SSL证书,我的服务器和域名都是在阿里云购买的,所以这里我演示阿里云获取SSL证书的方法 我先说下我的服务器环境:windows server 2012 + IIS8. ...

  4. myeclipse 报错:Set project compiler compliance settings to '1.5'

    myeclipse 报错:Set project compiler compliance settings to '1.5' 解决方法:项目右击-->properties-->java c ...

  5. springmvc基于注解的权限控制

    一.权限码 /** * @Title: AuthCode.java * @Package cn.com.kamfu.auth * @Description: TODO(用一句话描述该文件做什么) * ...

  6. 【CSS】input 框的一些事情

    1.input框光标太长与不居中的问题 如果input框height:40px 为了字体垂直居中line-height也设为40px 问题来了,这样光标在刚刚focus时候是占据整个input框并且输 ...

  7. vue css动画原理

    从隐藏到显现 从显现到隐藏 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. java des 加密/解密

    JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...

  9. 【leetcode】951. Flip Equivalent Binary Trees

    题目如下: For a binary tree T, we can define a flip operation as follows: choose any node, and swap the ...

  10. NOIP模拟测试19

    T1: 题目大意:将一颗有N个节点的树分割,使得每个联通块大小相等,问一共有多少方案.(N<=1000000) 首先,一条很显然的性质,每个联通块的大小一定是N的因子. 然后,我们可以对于每个因 ...