且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SDL历程--课程设计之显示文字

更新时间:2022-07-03 15:41:02

上一章节我简单的介绍了我们的第一个SDL小程序,实现一个小调色板的功能,注重说明了怎样在SDL_Surface上绘制自己的图案,
这一章节我则侧重于对文字在SDL_Surface上的显示做一下分析。让我们的屏幕也有自己的文字标记...当然了..也可以做出自己的记事本....
当然了..想要写字,必备的一条便是要有字库,大家可以到网上下载nfs-share.tar.gz这个字体包。然后将其中的simfang.ttf放在工作目录即可了,
大致使用到的函数有
TTF_OpenFont(const char *file, int ptsize);
设置字体,在我这里即为刚才下的nfs-share.tar.gz中的simfang.ttf,第二个参数即为所要设置字体大小,
TTF_RenderUTF8_Solid(TTF_Font *font,
    const char *text, SDL_Color fg);
    第一个参数为由TTF_OpenFont函数返回的TTF_Font对象,第二个参数为所要显示的文本文件内容,第三个参数为是一个
    字体颜色的结构体对象。
SDL_UpperBlit(SDL_Surface *src, SDL_Rect *srcrect,
    SDL_Surface *dst, SDL_Rect *dstrect);
这个函数的宏定义是SDL_BlitSurface,所以一般用的都是SDL_BlitSurface函数,
下面就以一个简单的范例来说明问题吧....

int main(int argc,char *argv[])
{
 if(SDL_Init(SDL_INIT_VIDEO) < 0 || TTF_Init() < 0 )
 {
  printf("Init error\n");
  return -1;
 }

 SDL_Surface *screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);

 if(!screen)
 {
  printf("Init video mode error\n");
  return -1;
 }
 
 TTF_Font * font = TTF_OpenFont("simfang.ttf",20);
 SDL_Color color = {175,100,220};
 SDL_Surface *text = TTF_RenderUTF8_Solid(font,"HELLO,你好",color);

 SDL_BlitSurface(text,0,screen,0);

 
 SDL_UpdateRects(screen,1,&screen->clip_rect);

 TTF_CloseFont(font);

 SDL_Delay(2000);

 TTF_Quit();
 SDL_Quit();
 return 0;
}

在一切都完成以后别忘了释放哟....养成一个好的习惯是成功的开始。
下一章我会对图片的加载来一个剖析....




     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/833296,如需转载请自行联系原作者