主页:
库及帮助文档下载:
http:///projects/
http:///libraries.php
(帮助文档在http:///projects/docs下)
1, SDL
全称 Simple DirectMedia Layer,是免费的跨平台多媒体应用编程接口,可用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等.
2, SDL_Image
SDL库只支持windows
bitmap格式的图片显示,而SDL_Image封装了多种格式的图像显示接口,它支持bmp,png,jpeg,jif等,当需要支持某种格式时,还
需要额外的图像解码接口,比如,如果要显示png格式的图像,那么还需要libpng,如果要显示jpeg的图像,需要libjpg.
3, SDL_ttf
该库用于显示文字.
操作过程介绍:
(1) TTF初始化
(2) 打开字体文件,并设置字体大小
(3) 设置字体的其他属性
(4)
使用打开的字体,将所要显示的文字"画"到内存中,根据文字的不同,有三类作用相同但名称不同的函数,他们是
Text,UTF8,UNICODE,Text是普通字符串,UFT8是UTF8格式的字符串,而UNICODE是UNICODE格式的字符串,比如,
TTF_RenderText_Solid
TTF_RenderUTF8_Solid
TTF_RenderUNICODE_Solid
这三组函数都是"画"空心字体,不同的是表示输出字符串的第二个参数.
(5) 将内存数据拷贝到当前显示设备环境
(6) 释放内存显示环境
(7) 刷新当前显示设备环境
(8) 关闭所打开的字体
(9) 销毁TTF
ex:
int DrawText(SDL_Surface *pScreen,const char *pszText,unsigned int nSize,int x,int y,SDL_Color color)
{
const char *pszFontName="arial.ttf";
TTF_Font *pFont;
SDL_Surface *pTextSurface;
SDL_Rect rect;
//打开字体文件并设置字体大小
if((pFont = TTF_OpenFont(pszFontName,nSize)) == NULL)
{
debug("call TTF_Open failed\n");
return -1;
}
//设置字体属性
TTF_SetFontStyle(pFont,TTF_STYLE_BOLD|TTF_STYLE_NORMAL);
rect.x = x;
rect.y = y;
rect.w = rect.h = 0;
SDL_Color bg = {0,255,255};
//使用打开的字体,将字符串"画"到内存(显示环境)中
if((pTextSurface = TTF_RenderText_Blended(pFont,pszText,color)) == NULL)
//if((pTextSurface = TTF_RenderText_Solid(pFont,pszText,color)) == NULL)
//if((pTextSurface = TTF_RenderText_Shaded(pFont,pszText,color,bg)) == NULL)
{
debug("call TTF_RenderUTF8_Solid failed\n");
}
else
{
//将内存(显示环境中的)数据拷贝到当前显示设备环境
SDL_BlitSurface(pTextSurface,NULL,pScreen,&rect);
}
//释放内存显示环境
SDL_FreeSurface(pTextSurface);
//刷新当前显示环境
SDL_Flip(pScreen);//flash the screen
//关闭字体
TTF_CloseFont(pFont);
return 0;
}
SDL_Color color = {255,0,0};
TTF_Init(); //TTF 初始化
DrawText(pScreen,"SDL Demo",30,10,10,color);
TTF_Quit(); //销毁TTF
注:
(1) 个人实验时,可以使用/usr/share/fonts/truetype/*.ttf,但在软件发行版中一定要小心选择所用的字体库,因为很多都是有版权的.
(2) 其他较流行的字体显示库还有freetype ()
他是一个完全免费的字体库,Licence:
4, SDL_mixer
SDL默认时只支持WAV文件的播放,其他格式,我们可以使用SDL_mixer所封装的接口.
阅读(4171) | 评论(0) | 转发(1) |