VC++ C++ C# Algorithm
C++博客
首页
新随笔
联系
聚合
管理
21 Posts :: 3 Stories :: 31 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
(21)
2007年3月 (13)
2007年1月 (1)
2006年12月 (5)
2006年11月 (2)
文章档案
(3)
2007年1月 (2)
2006年12月 (1)
相册
照片
资料网站
C++之父主页
题库吧
数据库面试题|Java面试题|C++面试题|.NET面试题
微软在线课程
搜索
最新评论
1. re: c++名字查找
是
--周敏桢
2. re: c++名字查找
名字区码
--王
3. re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
评论内容较长,点击标题查看
--dniit
4. re: c++名字查找
桔柑
--黄建宁
5. re: c++名字查找
我要找到王疆
--王疆
评论排行榜
1. c++名字查找(13)
2. SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体(4)
3. 循环的效率(4)
4. SDL游戏编程(8)鼠标事件(3)
5. C/C++中的日期和时间(转载)(2)
SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
SDL本身只支持加载BMP文件,如果你想显示其他类型的图像文件,就要用到扩展类库,扩展类库里面还有其他一些组件,你可以在这里下载到
http://www.libsdl.org/projects/SDL_image/
下载完以后,按照教程一配置,我们就可以显示一张PNG图片了。
以下是具体的代码,与教程二很相似,如有疑问请参考教程二。
#include
"
SDL.h
"
#include
<
SDL_image.h
>
#include
<
string
>
SDL_Surface
*
screen;
SDL_Surface
*
background;
SDL_Surface
*
load_image( std::
string
filename )
{
//
The image that's loaded
SDL_Surface
*
loadedImage
=
NULL;
//
The optimized image that will be used
SDL_Surface
*
optimizedImage
=
NULL;
//
Load the image using SDL_image
loadedImage
=
IMG_Load( filename.c_str() );
//
If the image loaded
if
( loadedImage
!=
NULL )
{
//
Create an optimized image
optimizedImage
=
SDL_DisplayFormat( loadedImage );
//
Free the old image
SDL_FreeSurface( loadedImage );
}
//
Return the optimized image
return
optimizedImage;
}
void
apply_surface(
int
x,
int
y,SDL_Surface
*
source ,SDL_Surface
*
destinaion)
{
SDL_Rect rect;
rect.x
=
x;
rect.y
=
y;
SDL_BlitSurface(source,NULL,destinaion,
&
rect);
}
int
main(
int
argc,
char
*
args[] )
{
//
Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//
Quit SDL
screen
=
SDL_SetVideoMode(
640
,
480
,
32
,SDL_SWSURFACE);
background
=
load_image(
"
Dockxrt5.jpg
"
);
apply_surface(
0
,
0
,background,screen);
if
(SDL_Flip(screen)
==-
1
)
return
-
1
;
SDL_FreeSurface(background);
SDL_Delay(
2000
);
SDL_FreeSurface(background);
SDL_Quit();
return
0
;
}
以下代码用SDL_TTF扩展类库加载一个TTF字体文件,并用该字体显示一段文字。
1
#include
"
SDL.h
"
2
#include
<
SDL_ttf.h
>
3
#include
<
string
>
4
SDL_Surface
*
screen;
5
SDL_Surface
*
background;
6
void
apply_surface(
int
x,
int
y,SDL_Surface
*
source ,SDL_Surface
*
destinaion)
7
{
8
SDL_Rect rect;
9
rect.x
=
x;
10
rect.y
=
y;
11
SDL_BlitSurface(source,NULL,destinaion,
&
rect);
12
13
}
14
int
main(
int
argc,
char
*
args[] )
15
{
16
//
Start SDL
17
18
SDL_Init( SDL_INIT_EVERYTHING );
19
if
(TTF_Init()
==-
1
)
20
return
-
1
;
21
TTF_Font
*
font
=
NULL;
22
font
=
TTF_OpenFont(
"
verdana.ttf
"
,
14
);
23
if
(font
==
NULL)
24
return
-
1
;
25
26
//
Quit SDL
27
SDL_Color textColor
=
{
255
,
255
,
255
}
;
28
SDL_Color textBgColor
=
{
0
,
0
,
0
,}
;
29
screen
=
SDL_SetVideoMode(
640
,
480
,
32
,SDL_SWSURFACE);
30
background
=
TTF_RenderText_Blended( font,
"
why it can not display chinese
"
, textColor);
31
32
apply_surface(
0
,
0
,background,screen);
33
34
if
(SDL_Flip(screen)
==-
1
)
35
return
-
1
;
36
37
SDL_Delay(
100000
);
38
SDL_Quit();
39
40
return
0
;
41
}
42
posted on 2007-03-05 22:30
大熊猫
阅读(3428)
评论(4)
编辑
收藏
引用
Feedback
#
re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
2007-05-06 21:54
bloodbao
请问在DEV_CPP或CODEBLOCKS下如何编译SDL_IMAGE,
有没有SDL_IMAGE.A
回复
更多评论
#
re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
2007-05-10 21:38
wqm
SDL_ttf.h在哪里可以找到?
回复
更多评论
#
re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
2007-05-21 11:06
阿丁
SDL_ttf.h在哪里可以找到?
能否发一份完整的SDL的包文件给我,
jacknes111@163.com
先谢谢哦
回复
更多评论
#
re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
2008-11-18 10:29
dniit
@阿丁
到我的CSDN下载
http://dniit.download.csdn.net
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大熊猫