第10章 Linux的图形编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
10.3 初始化图形模式
初始化图形模式中常用函数及功能 :
6
10.3 初始化图形模式
要加载和初始化SDL库需要调用SDL_Init()函 数,该函数以一个参数来传递要激活的子系统的 标记。
SDL_Init()函数说明:
7
10.3 初始化图形模式
flags参数取值所对应的子系统对象 :
34
10.6动画
编辑源程序代码:
思考题:编写一个程序,主要实现圆球运动效果,使用键 盘事件,按下Esc键退出程序。
35
10.7 三维绘图
三维绘图的常用函数:
36
10.7 三维绘图
例10.9:设计一个程序,在屏幕上绘制一个立体 矩形,并按照一定的角度和方向旋转。设程序 名为10-10.c,存放在/home/cx/下。 编辑源程序代码:
第 10 章
Linux的图形编程
本章重点
1. 使用SDL图形开发库并及图形模式的初始化。 2. 基本绘图函数的应用。 3. 图片与文字的显示。 4. 动画设计。 5. 三维绘图。 6. 用SDL实现简单游戏设计。
2
10.1 Linux的图形编程简介
在Linux 图形编程中,基于控制台的图形库主要有: SVGALib: 是最早基于Linux的非X的图形支持库。 FrameBuffer:出现在Linux 2.2.x内核当中的一种驱动程序 接口。 GGI:新一代的图形支持库。可在 FrameBuffer, SVGALib 等设备上运行。在所有平台上提供了一致的输入设备接口, 采用共享库机制, 实现低层支持库的动态装载等 。 OpenGL: 是个专业的3D程序接口,功能强大,调用方便 的底层3D图形库。 SDL:是一个跨平台的多媒体游戏支持库,包含了对图形、 声音、游戏杆、线程等的支持。
Draw_Round函数说明:
29
10.5 图片与文字显示
常用的函数及功能 :
30
10.5 图片与文字显示
例10.6:设计一个程序,初始化视频子系统,设 置显示模式为640*480,表面的色深为16位,加 载位图b.bmp,并按照一定的顺序把位图排列显 示。设程序名为10-6.c,存放在/home/cx/下, 位图名为b.bmp也存放在该目录下。 编辑源程序代码:
程序代码 10-5
24
10.4基本绘图函数的应用
编辑源程序代码 :
25
10.4基本绘图函数的应用
Draw_HLine函数说明:
26
10.4基本绘图函数的应用
Draw_VLine函数说明:
27
10.4基本绘图函数的应用
Draw_Ellipse函数说明:
28
10.4基本绘图函数的应用
simsun.ttc文件拷贝到Linux下的/usr/share/fonts/下, 用于显示中文。
编辑源程序代码:
思考题:编写一个程序,主要实现粗 体,斜体,下划线等字体效果,同时 让屏幕停留5秒。
33
10.6动画
动画的常用函数:
例10.8:设计一个程序,实现矩形的运动,矩形 是通过位图显示,当矩形碰到四边时,会自动反 弹,按任意键退出。按程序名为10-8.c,存放在 /home/cx/下,位图素材(b.bmp)也存放在该目 录下。
15
10.4基本绘图函数的应用
思考题: 1. 编写一个简单的画线程序:要求设置背景色为红色,线条颜 色为绿色,绘制一个边长为120的正三角形,同时让屏幕停 留8秒。 2. 线段长度无限短后就成为点,请用画线的方法画出正弦曲线。 3. 能否用画线的方法实现动画。
16
பைடு நூலகம்
10.4基本绘图函数的应用
Draw_Line函数说明
8
例10.1 初始化视频子系统,设置显 示模式为640×480。设置初始颜色 为红色并对颜色值进行改变图10.1流 程图,使程序执行过程中背景色渐变。 编写程序10-1.c,放在/home/cx/101目录下。 分析 用SDL_Init (SDL_INIT_VIDEO)初始化视频子 系统,并用SDL_SetVideoMode( )函 数设置显示模式,最后用 SDL_MapRGB( )设置背景颜色。
20
10.4基本绘图函数的应用
例10.4:使用SDL_draw库设计一个程序,初始 化视频子系统,设置显示模式为640*480,表面 的色深为16位,用Draw_Rect函数画2个矩形, 一个矩形的左上角坐标是(80,180),宽和高 分别是160和120,颜色为白色,另一个矩形的 左上角坐标是(319,179),宽和高分别是 242和122,颜色为黄色。用Draw_FillRect 函数 画1个矩形,其左上角坐标是(320,180),宽 和高分别是240和120,颜色为红色。 程序名为 10-4.c,存放在/home/cx/SDL_draw-1.2.11下。
38
10.8 游戏程序入门
编辑源程序代码:
思考题: 1. 改写程序10-8.c,再画一块档板,可 以用“←”、“→”键移动档板,移动 档板,档住方块,使得方块不会与底 边相碰。当方块与档板相碰时,方块 反弹,游戏继续,积分加1;当方块与 底边相碰时,游戏结束,显示积分值。 2. 改写程序10-10.c,改变飞机、大炮的 形状与数量,其余与题10-10.c类似。
40
13
[root@localhost root]# mkdir /home/cx/10-2 [root@localhost root]# cd /home/cx/10-2 编辑程序 10-2.c 程序代码。 [root@localhost 10-2]# gedit 10-2.c
程序代码 10-2
14
3
10.2 安装和使用SDL图形开发库
表10.1 SDL的基本库与附加库 的库名及含义
库 名 SDL SDL_image SDL_mixer SDL_ttf SDL_net SDL_draw 含 义
基本库 图像支持库 混音支持库 TrueType字体支持库 网络支持库 基本绘图函数库
SDL图形库已经成为目前最为流行的Linux标准配置的多媒体库,系 统安装时一般都已经默认安装了它们。
23
10.4基本绘图函数的应用
例10.5:使用SDL_draw库设计一个程序,初始化视频 子系统,设置显示模式为640*480,表面的色深为16位, 用Draw_HLine函数画一水平直线,起始点为(240, 240),长度为160,颜色为白色;用Draw_VLine函数 画一垂直直线,起始点为(320,180),长度为120, 颜色为红色,用Draw_Ellipse函数画一椭圆,圆心 (240,180),x轴径76,y轴径56,颜色为蓝色,用 Draw_FillEllipse填充此椭圆,用Draw_Round画一圆角 矩形,左上角坐标为(322,122),宽为156,高为 116,圆角的半径为10,颜色为绿色,用 Draw_FillRound填充此圆角矩形。
31
10.5 图片与文字显示
SDL_LoadBMP函数说明: SDL_BlitSurface函数说明:
32
10.5 图片与文字显示
例10.7:设计一个程序,初始化视频子系统,设 置显示模式为640*480,表面的色深为16位,使用 SDL_ttf库在屏幕上显示“Linux下TrueType字体 显示示例”,字体大小为38,颜色为红色。设程 序名为10-7.c,存放在/home/cx/下。 注意:文件保存的时候请使用UTF8格式保 准备工作:把windows 下C:\WINDOWS\Fonts中的 存,才能正常显示中文字体。
9
[root@localhost root]# mkdir /home/cx/10-1 [root@localhost root]# cd /home/cx/10-1 编辑程序 10-1.c 程序代码。 [root@localhost 10-1]# gedit 10-1.c
程序代码 10-1
10
10.3 初始化图形模式
Draw_Pixel 函数说明
17
例10.3 使用SDL_draw库设 计一个程序,初始化视频子 系统,设置显示模式为 640×480,画面的色深为 16位,画5个黄色的同心圆, 圆心坐标为(320,240), 最小的圆半径为5,其他圆 的半径以15的大小递增,程 序名为10-3.c,存放在 /home/cx/SDL_draw-1.2.11 下。
思考题:
1. 编写一个简单的SDL初始化程序:要求背景色为红色,让屏
幕停留5秒。 2. 编写一个简单的SDL初始化程序:要求背景色的红、绿、兰 为随机显示值,让屏幕停留10秒。
11
10.4基本绘图函数的应用
主要应用SDL_draw函数库绘制点、线、圆等基 本图形。 常用的基本绘图函数及功能:
4
10.2 安装和使用SDL图形开发库
1.使用SDL库需要包含头文件:#include "SDL.h" 2.编译命令为:gcc –I/usr/include/SDL –lSDL 源 程序名 –o 目标文件名 -lpthread 3.如果程序中使用了图像库和混音库,在编译的时 候还需要加上相应的编译参数,分别是lSDL_image和-lSDL_mixer。
思考题: 1. 编写一个程序,实现正方体的旋转方向为顺 时针,并且使得旋转的速度加快,正方体的 上下面颜色为红色,左右面颜色为绿色,前 后面颜色为蓝色。(小提示:旋转的速度可 以根据旋转的角度值改变量来实现)。 2. 把例10.9中的正方体改成三棱锥。
37
10.8 游戏程序入门
例10.10:利用SDL库,综合运用以上所学的函数及方法, 实现大炮打飞机的游戏。游戏初始化的时候大炮在屏幕 底部中间,从屏幕的上方不断出现飞机,保持。可以使 用键盘方向键控制大炮的左右移动,→表示向右,←表 示向左。使用空格键发射炮弹。飞机水平运行,并逐渐 往下移动,大炮弹若是击中飞机,爆炸,系统会立即再 产生飞机,保证飞机数量为2架。假设飞机下降到大炮 的位置,那么大炮就被炸毁,游戏结束。程序名为1010.c,存放在/home/cx文件下。本题中用到的素材大炮、 飞机、背景图片等放在data文件夹里,data文件夹放在 /home/cx文件下。
39
思考与实验
1. 参考SDL_draw库中关于椭圆的函数介绍,画一 个椭圆。 2. 利用画线,画圆和画矩形,自行创意设计三者结 合的图形。 3. 编写一个程序,运用绘图、位图与文字显示的知 识,实现看图识字的效果。 4. 参考例10.10,模仿飞机打大炮的原理,实现一 个军舰发射鱼雷打怪物的游戏。要求军舰在屏幕 上方,向下发射鱼雷,打击不断从屏幕下方出现 的怪物,如果怪物上升到和军舰相碰的时候,游 戏结束。
12
10.4基本绘图函数的应用
例10.2:使用SDL_draw库设计一个程序,初始 化视频子系统,设置显示模式为640*480,表面 的色深为16位,用Draw_Line函数画两条交叉的 直线,一条直线起始点的坐标为(240,180), 终止点的坐标为(400,300),另一条直线起 始点的坐标为(400,180),终止点的坐标为 (240,300)。再用Draw_Pixel函数绘制一条 正弦曲线。程序名为10-2.c,存放在 /home/cx/SDL_draw-1.2.11下。
21
程序代码 10-4
10.4基本绘图函数的应用
编辑源程序代码 :
22
10.4基本绘图函数的应用
Draw_Rect函数说明 :
思考题:编写一个画矩形的程序:实现5个矩形从大到 小向屏幕中心依次缩小,每个矩形间隔20个单位,要求 最里面即最小的矩形宽、高分别为80和60,同时让屏幕 停留5秒。
18
程序代码 10-3
10.4基本绘图函数的应用
Draw_Circle函数说明
19
思考: 1. 编写一个画圆的程序。要求设置背景色为黄色, 线条颜色为蓝色,以正三角形的三个顶点为圆心, 半径为60画三个圆,同时让屏幕停留8秒。 2. 画一个半径渐渐增大、颜色随机变化的圆。 3. 画一个圆,此圆沿着正弦曲线运动。
相关文档
最新文档