SDL系列之 - 字体显示测试

例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/下,用于显示中文。
编辑源程序代码:

 1 #include <SDL.h>
 2 #include <stdlib.h>
 3 #include <SDL_ttf.h>
 4 int main()
 5 {
 6         SDL_Surface *text, *screen;     //一个屏幕指针
 7         SDL_Rect drect;         //目标矩形
 8         TTF_Font *Nfont;        //文字样式对象
 9         SDL_Color red={ 255, 0, 0, 0 }; //设置字体颜色
10         int fontsize=38;                //设置字体大小
11         if(SDL_Init(SDL_INIT_VIDEO) < 0){       //初始化视频子系统失败
12                 fprintf(stderr,"无法初始化:%s\n",SDL_GetError());       //不能用printf(),因为没有包含stdio.h头文件
13                 exit(1);
14         }   
15         //设置视频模式
16         screen=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
17         if(screen==NULL){
18                 fprintf(stderr,"无法设置视频模式:%s\n",SDL_GetError());
19                 exit(1);
20         }   
21         atexit(SDL_Quit);       //退出
22 
23         if(TTF_Init()!=0){      //初始化字体
24                 fprintf(stderr,"Can't init ttf font!\n");
25                 exit(1);
26         }   
27 
28         //打开字体库
29         Nfont=TTF_OpenFont("/usr/share/fonts/simsun.ttc",fontsize);
30         TTF_SetFontStyle(Nfont,TTF_STYLE_NORMAL);       //设置字体样式
31         text=TTF_RenderUTF8_Blended(Nfont, "Linux下TureType显示示例",red);
32         TTF_CloseFont(Nfont);           //关闭字体库
33         TTF_Quit();             //退出
34         drect.x=40;             //在点(240,160)处开始写
35         drect.y=60;
36         drect.w=text->w;        //目标矩形的宽和高分别是所写字体的宽和高
37         drect.h=text->h;
38         SDL_BlitSurface(text, NULL, screen, &drect);    //把目标对象快速转化
39         SDL_UpdateRect(screen,0,0,0,0);         //更新整个屏幕
40         SDL_FreeSurface(text);          //释放写有文字的surface
41         SDL_Delay(5000);                //让屏幕停留5秒钟的时间
42 
43         return 0;
44 }

 

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()。

 

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

 

转载于:https://www.cnblogs.com/fallenmoon/p/6906281.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XO_OX 0.0 这些是“XO_OX"的注解。它们会让你全面了解这个游戏,并会说明如何安装它。 什么是“XO_OX"? “XO_OX"又名“五子棋”,五子棋则咸信是流传于古中国的传统棋种之一,至今仍在民间广泛流传,规则相当简单。或许因没有形成一套独立完整的棋种理论及文化内涵,更无制定公平完善的规则来解决黑白平衡问题,一直没有得到发展,所以没有像六博、格五、弹棋等传统棋类流传广泛,导致缺少可考古的棋具或文献,直到流传到外国才规则改革。 不管是哪种五子棋,棋手在先后手的观念、空间的思维及对棋形的理解都十分重要。 游戏规则: * 行棋:一人流轮一著下于棋盘空点处,下后不得移动。 * 胜负:先把五枚或以上己棋相连成任何横纵斜方向为胜。 * 和棋: o 行棋中一方提出和棋,另一方同意则判和棋。 o 棋子落满整张棋盘仍未分出胜负为和棋。 o 一方PASS后另一方下一手也PASS为和棋。 技术规格说明: 1、用C语言调用SDL实现; 2、基于LGPL协议。 3、程序中用到了SDL_image扩展包 如何安装: 1、在终端中运行make 2、在终端中运行make install 如何卸载: make uninstall 历史: 一、2011年8月15日 项目开始,谢红负责图形模块,赵梓辰负责游戏逻辑,吕玉飞负责事件响应,范人豪负责整体架构。 二、2011年8月17日 为了增加游戏的可玩性,项目由圈叉棋升级为五子棋。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值