zoukankan      html  css  js  c++  java
  • SDL系列之

    例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色。设程序名为9-7.c,存放在/home/cx/下。
    准备工作:把windows下C:WINDOWSFonts中的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
    ",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
    ",SDL_GetError());
    19                 exit(1);
    20         }   
    21         atexit(SDL_Quit);       //退出
    22 
    23         if(TTF_Init()!=0){      //初始化字体
    24                 fprintf(stderr,"Can't init ttf font!
    ");
    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()。

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

  • 相关阅读:
    使用windows自带工具计算文件 MD5 值
    去除桌面图标的箭头
    给自己电脑(物理机)安装 linux 系统
    Python 字典 fromkeys()方法的坑
    Python 超时(运行时间太长) 自定义多长时间结束进程
    Win10 python2和python3共存
    verdidebussy的使用技巧
    <DC guide ---2>
    <DC guide ---1>
    <RTL To GDS ---第一阶段>
  • 原文地址:https://www.cnblogs.com/fallenmoon/p/6906281.html
Copyright © 2011-2022 走看看