例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. Spring Cloud配置中心内容加密

    从配置获取的配置默认是明文的,有些像数据源这样的配置需要加密的话,需要对配置中心进行加密处理. 下面使用对称性加密来加密配置,需要配置一个密钥,当然也可以使用RSA非对称性加密,但对称加密比较方便也够 ...

  2. ReentrantLock的相关方法使用

    获取锁定 void lock():常用获取锁定的方法 void lockInterruptibly():如果当前线程未被中断,则获取锁定:如果当前线程被中断,则出现异常 boolean tryLock ...

  3. JSP界面引用百度地图获取坐标

    需求: 需要在JSP界面上引用百度地图,文本框中输入地址之后,自动拿到在百度地图上的经纬度 解决步骤: 1.引入百度地图api: head中进行引用<script type="text ...

  4. JS模拟实现题目(new debounce throwee 等)

    模拟new实现 function newObject() { let obj = new Object(); let Con = [].shift.apply(arguments) obj.__pro ...

  5. 使用source insert 查看Linux内核源码

    先配置下source insert软件,添加工程文件时可以支持各种类型的文件 “ Options ” --> “ Preferences ” ---> “ Languages ” ---& ...

  6. aarch64 cross compile 交叉编译 opencv

    需求 : linux host :  UBUNTU opencv source : opencv 3.3.1.zip CMAKE  :  apt-get install cmake cmake-qt- ...

  7. VMware虚拟机提示找不到vmnetbridge.dl文件的解决办法

    把vmware workstation删了重装,估计是异地安装包在安装时候出现的问题. 先把安装包拷贝到本地,然后控制面板上把已有的vmware workstation删除. 最后重新安装VMware ...

  8. spring+springmvc+mybatis框架搭建

    一.开发前准备 1)ecplise4.11.0 百度网盘:https://pan.baidu.com/s/1wO9_I52lp0mYNeNTdnj80w 提取码:booa 2)jdk1.6.0_45  ...

  9. 通过list中值得名称查询索引号

    >>> a = ['www','iplaypython','com']>>> a.index('iplaypython')

  10. 【Luogu】【关卡2-3】排序(2017年10月) 【AK】

    任务说明:将杂乱无章的数据变得有规律.有各种各样的排序算法,看情况使用. 这里有空还是把各种排序算法总结下吧.qsort需要会写.. P1177 [模板]快速排序 这个题目懒得写了,直接sort了.. ...