linux系统编程第9章.ppt_第1页
linux系统编程第9章.ppt_第2页
linux系统编程第9章.ppt_第3页
linux系统编程第9章.ppt_第4页
linux系统编程第9章.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章,Linux的图形编程,2,本章重点,使用SDL图形开发库并初始化图形模式基本绘图函数的应用图片与文字的显示动画三维绘图用SDL实现简单游戏设计,3,9.1Linux的图形编程简介,在Linux图形编程中,基于控制台的图形库主要有:SVGALib:是最早基于Linux的非X的图形支持库。FrameBuffer:出现在Linux2.2.x内核当中的一种驱动程序接口。GGI:新一代的图形支持库。可在FrameBuffer,SVGALib等设备上运行。在所有平台上提供了一致的输入设备接口,采用共享库机制,实现低层支持库的动态装载等。OpenGL:是个专业的3D程序接口,功能强大,调用方便的底层3D图形库。SDL:是一个跨平台的多媒体游戏支持库,包含了对图形、声音、游戏杆、线程等的支持。,4,9.2安装和使用SDL图形开发库,系统安装时一般都已经默认安装了SDL库,如没安装,参见附录1。SDL的基本库与附加库的库名与含义:,使用SDL库需要包含头文件:#includeSDL.h编译命令为:gccI/usr/include/SDLlSDL源程序名o目标文件名-lpthread如果程序中使用了图像库和混音库,在编译的时候还需要加上相应的编译参数,分别是-lSDL_image和-lSDL_mixer。,5,9.3初始化图形模式,初始化图形模式中常用函数及功能:,要加载和初始化SDL库需要调用SDL_Init()函数,该函数以一个参数来传递要激活的子系统的标记。SDL_Init()函数说明:,flags参数取值所对应的子系统对象:,6,9.3初始化图形模式,例9.1:初始化视频子系统,设置显示模式为640*480大小。设置初始颜色并对颜色值进行改变,使程序执行过程中背景色渐变。编写程序9-1.c,放在/home/cx/下。,源程序代码:,思考题:编写一个简单的SDL初始化程序:要求背景色为红色,让屏幕停留5秒。编写一个简单的SDL初始化程序:要求背景色的红、绿、兰为随机显示值,让屏幕停留10秒。,7,9.4基本绘图函数的应用,主要应用SDL_draw函数库绘制点、线、圆等基本图形。常用的基本绘图函数及功能:,8,9.4基本绘图函数的应用,例9.2:使用SDL_draw库设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,用Draw_Line函数画两条交叉的直线,一条直线起始点的坐标为(240,180),终止点的坐标为(400,300),另一条直线起始点的坐标为(400,180),终止点的坐标为(240,300)。再用Draw_Pixel函数绘制一条正弦曲线。程序名为9-2.c,存放在/home/cx/SDL_draw-1.2.11下。,9,9.4基本绘图函数的应用,编辑源程序代码:rootlocalhostSDL_draw-1.2.11#gedit9-2.c,编译时与一般的SDL程序有所不同,分三步。rootlocalhostSDL_draw-1.2.11#exportCFLAGS=sdl-config-cflags-I./includerootlocalhostSDL_draw-1.2.11#exportLIBS=sdl-config-libs./src/.libs/libSDL_draw.arootlocalhostSDL_draw-1.2.11#gcc-o9-29-2.c-Wall$CFLAGS$LIBS,思考题:编写一个简单的画线程序:要求设置背景色为红色,线条颜色为绿色,绘制一个边长为120的正三角形,同时让屏幕停留8秒。线段长度无限短后就成为点,请用画线的方法画出正弦曲线。能否用画线的方法实现动画。,10,9.4基本绘图函数的应用,Draw_Line函数说明,Draw_Pixel函数说明,11,9.4基本绘图函数的应用,例9.3:使用SDL_draw库设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,画5个黄色的同心圆,圆心坐标为(320,240),最小的圆半径为5,其它圆的半径以15的大小递增,程序名为9-3.c,存放在/home/cx/SDL_draw-1.2.11下。编辑源程序代码:,12,9.4基本绘图函数的应用,Draw_Circle函数说明,思考题:编写一个画圆的程序:要求设置背景色为黄色,线条颜色为蓝色,以正三角形的三个顶点为圆心,半径为60画三个圆,同时让屏幕停留8秒。画一个半径渐渐增大,颜色随机变化的圆。画一个圆,此圆沿着正弦曲线运动。,13,9.4基本绘图函数的应用,例9.4:使用SDL_draw库设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,用Draw_Rect函数画2个矩形,一个矩形的左上角坐标是(80,180),宽和高分别是160和120,颜色为白色,另一个矩形的左上角坐标是(319,179),宽和高分别是242和122,颜色为黄色。用Draw_FillRect函数画1个矩形,其左上角坐标是(320,180),宽和高分别是240和120,颜色为红色。程序名为9-4.c,存放在/home/cx/SDL_draw-1.2.11下。,14,9.4基本绘图函数的应用,编辑源程序代码:,15,9.4基本绘图函数的应用,Draw_Rect函数说明:,思考题:编写一个画矩形的程序:实现5个矩形从大到小向屏幕中心依次缩小,每个矩形间隔20个单位,要求最里面即最小的矩形宽、高分别为80和60,同时让屏幕停留5秒。,16,9.4基本绘图函数的应用,例9.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填充此圆角矩形。,17,9.4基本绘图函数的应用,编辑源程序代码:,18,9.4基本绘图函数的应用,Draw_HLine函数说明:,Draw_VLine函数说明:,Draw_Ellipse函数说明:,Draw_Round函数说明:,19,9.5图片与文字显示,常用的函数及功能:,20,9.5图片与文字显示,例9.6:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,加载位图b.bmp,并按照一定的顺序把位图排列显示。设程序名为9-6.c,存放在/home/cx/下,位图名为b.bmp也存放在该目录下。编辑源程序代码:,21,9.5图片与文字显示,SDL_LoadBMP函数说明:,SDL_BlitSurface函数说明:,22,9.5图片与文字显示,例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色。设程序名为9-7.c,存放在/home/cx/下。准备工作:把windows下C:WINDOWSFonts中的simsun.ttc文件拷贝到Linux下的/usr/share/fonts/下,用于显示中文。编辑源程序代码:,注意:文件保存的时候请使用UTF8格式保存,才能正常显示中文字体。,思考题:编写一个程序,主要实现粗体,斜体,下划线等字体效果,同时让屏幕停留5秒。,23,9.6动画,动画的常用函数:,例9.8:设计一个程序,实现矩形的运动,矩形是通过位图显示,当矩形碰到四边时,会自动反弹,按任意键退出。按程序名为9-8.c,存放在/home/cx/下,位图素材(b.bmp)也存放在该目录下。,24,9.6动画,编辑源程序代码:,思考题:编写一个程序,主要实现圆球运动效果,使用键盘事件,按下Esc键退出程序。,25,9.7三维绘图,三维绘图的常用函数:,26,9.7三维绘图,例9.9:设计一个程序,在屏幕上绘制一个立体矩形,并按照一定的角度和方向旋转。设程序名为9-9.c,存放在/home/cx/下。编辑源程序代码:,思考题:编写一个程序,实现正方体的旋转方向为顺时针,并且使得旋转的速度加快,正方体的上下面颜色为红色,左右面颜色为绿色,前后面颜色为蓝色。(小提示:旋转的速度可以根据旋转的角度值改变量来实现)。把例9.9中的正方体改成三棱锥。,27,9.8游戏程序入门,例9.10:利用SDL库,综合运用以上所学的函数及方法,实现大炮打飞机的游戏。游戏初始化的时候大炮在屏幕底部中间,从屏幕的上方不断出现飞机,保持。可以使用键盘方向键控制大炮的左右移动,表示向右,表示向左。使用空格键发射炮弹。飞机水平运行,并逐渐往下移动,大炮弹若是击中飞机,爆炸,系统会立即再产生飞机,保证飞机数量为2架。假设飞机下降到大炮的位置,那么大炮就被炸毁,游戏结束。程序名为9-10.c,存放在/home/cx文件下。本题中用到的素材大炮、飞机、背景图片等放在data文件夹里,data文件夹放在/home/cx文件下。,28,9.8游戏程序入门,编辑源程序代码:,思考题:改写程序9-8.c,再画一块档板,可以用“”、“”键移动档板,移动档板,档住方块,使得方块不会与底边相碰。当方块与档板相碰时,方块反弹,游戏继续,积分加1;当方块与底边相碰时,游戏结束,显示积分值。改写程序9-10.c,改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论