第 9 章 Linux的图形编程.

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

解析几何 4.1.2圆的一般方程 邵东一中高1数学组 林真武.
圆的方程复习.
云南省丽江市古城区福慧学校 执教者 :和兆星.
丰富的图形世界(2).
PRESENTED BY OfficePLUS
俄罗斯方块:注意观察游戏中用到的 数学的知识
第 10 章 Linux的图形编程.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
义务教育课程标准实验教科书 九年级数学上册 24.3 正多边形和圆(第2课时) 正多边形的画法.
点与圆的位置关系 云衢中学 孟战军.
探索三角形相似的条件(2).
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
武汉纺织大学传媒学院 cm.wtu.edu.cn
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
走进编程 程序的顺序结构(二).
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数学模型实验课(三) 插值与三维图形.
Windows 7 的系统设置.
双曲线的简单几何性质 杏坛中学 高二数学备课组.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
2.1.2 空间中直线与直线 之间的位置关系.
SOA – Experiment 2: Query Classification Web Service
专题作业.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
第四章 四边形性质探索 第五节 梯形(第二课时)
计算机及办公软件应用 ©2013 苏州工业园区职业技术学院
北师大版八年级(上) 第五章 位置的确定 5.2 平面直角坐标系(3).
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
实验一 体验Nachos下的并发程序设计 陈毅东 2006年春.
一个直角三角形的成长经历.
姚金宇 MIT SCHEME 使用说明 姚金宇
3.3 垂径定理 第2课时 垂径定理的逆定理.
Logo语言. Logo语言 视图窗口 小海龟 ?: 提示符 l: 光标 命令窗口.
实验七 安全FTP服务器实验 2019/4/28.
Word中活用“艺▪图▪框” 信息技术必修(一).
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
O x y i j O x y i j a A(x, y) y x 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
一元二次不等式解法(1).
计算机绘图 AutoCAD2016.
直线的倾斜角与斜率.
武汉纺织大学传媒学院 cm.wtu.edu.cn
总复习.
欢迎大家来到我们的课堂 §3.1.1两角差的余弦公式 广州市西关外国语学校 高一(5)班 教师:王琦.
4.6 图形的位似     观察思考:这两幅图片有什么特征? 都是有好几张相似图形组成,每个对应顶点都经过一点.
正弦函数的性质与图像.
24.4弧长和扇形面积 圆锥的侧面积和全面积.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第5课 美妙的万花筒世界 ——如何实现LOGO重复命令的嵌套.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
1.2轴对称的性质 八 年 级 数 学 备 课 组.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
1.4.1正弦函数、余弦函数的图象.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
1.4.1正弦函数、余弦函数的图象.
生活中的几何体.
H a S = a h.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
第三章 图形的平移与旋转.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
Presentation transcript:

第 9 章 Linux的图形编程

本章重点 使用SDL图形开发库并初始化图形模式 基本绘图函数的应用 图片与文字的显示 动画 三维绘图 用SDL实现简单游戏设计

9.1 Linux的图形编程简介 在Linux 图形编程中,基于控制台的图形库主要有: SVGALib: 是最早基于Linux的非X的图形支持库。 FrameBuffer:出现在Linux 2.2.x内核当中的一种驱动程序接口。 GGI:新一代的图形支持库。可在 FrameBuffer, SVGALib等设备上运行。在所有平台上提供了一致的输入设备接口, 采用共享库机制, 实现低层支持库的动态装载等 。 OpenGL: 是个专业的3D程序接口,功能强大,调用方便的底层3D图形库。 SDL:是一个跨平台的多媒体游戏支持库,包含了对图形、声音、游戏杆、线程等的支持。

9.2 安装和使用SDL图形开发库 系统安装时一般都已经默认安装了SDL库,如没安装,参见附录1。 SDL的基本库与附加库的库名与含义: 使用SDL库需要包含头文件:#include "SDL.h" 编译命令为:gcc –I/usr/include/SDL –lSDL 源程序名 –o 目标文件名 -lpthread 如果程序中使用了图像库和混音库,在编译的时候还需要加上相应的编译参数,分别是-lSDL_image和-lSDL_mixer。

9.3 初始化图形模式 初始化图形模式中常用函数及功能 : 9.3 初始化图形模式 初始化图形模式中常用函数及功能 : 要加载和初始化SDL库需要调用SDL_Init()函数,该函数以一个参数来传递要激活的子系统的标记。 SDL_Init()函数说明: flags参数取值所对应的子系统对象 :

9.3 初始化图形模式 例9.1:初始化视频子系统,设置显示模式为640*480大小。设置初始颜色并对颜色值进行改变,使程序执行过程中背景色渐变。编写程序9-1.c,放在/home/cx/下。 源程序代码 : 思考题: 编写一个简单的SDL初始化程序:要求背景色为红色,让屏幕停留5秒。 编写一个简单的SDL初始化程序:要求背景色的红、绿、兰为随机显示值,让屏幕停留10秒。

9.4基本绘图函数的应用 主要应用SDL_draw函数库绘制点、线、圆等基本图形。 常用的基本绘图函数及功能:

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.4基本绘图函数的应用 编辑源程序代码: 编译时与一般的SDL程序有所不同,分三步。 思考题: 编写一个简单的画线程序:要求设置背景色为红色,线条颜色为绿色,绘制一个边长为120的正三角形,同时让屏幕停留8秒。 线段长度无限短后就成为点,请用画线的方法画出正弦曲线。 能否用画线的方法实现动画。 9.4基本绘图函数的应用 编辑源程序代码: [root@localhost SDL_draw-1.2.11]#gedit 9-2.c 编译时与一般的SDL程序有所不同,分三步。 [root@localhost SDL_draw-1.2.11]#export CFLAGS="`sdl-config --cflags` -I./include" [root@localhost SDL_draw-1.2.11]#export LIBS="`sdl-config --libs` ./src/.libs/libSDL_draw.a" [root@localhost SDL_draw-1.2.11]#gcc -o 9-2 9-2.c -Wall $CFLAGS $LIBS

9.4基本绘图函数的应用 Draw_Line函数说明 Draw_Pixel 函数说明

9.4基本绘图函数的应用 例9.3:使用SDL_draw库设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,画5个黄色的同心圆,圆心坐标为(320,240),最小的圆半径为5,其它圆的半径以15的大小递增,程序名为9-3.c,存放在/home/cx/SDL_draw-1.2.11下。 编辑源程序代码:

9.4基本绘图函数的应用 Draw_Circle函数说明 思考题: 编写一个画圆的程序:要求设置背景色为黄色,线条颜色为蓝色,以正三角形的三个顶点为圆心,半径为60画三个圆,同时让屏幕停留8秒。 画一个半径渐渐增大,颜色随机变化的圆。 画一个圆,此圆沿着正弦曲线运动。

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下。

9.4基本绘图函数的应用 编辑源程序代码 :

9.4基本绘图函数的应用 Draw_Rect函数说明 : 思考题:编写一个画矩形的程序:实现5个矩形从大到小向屏幕中心依次缩小,每个矩形间隔20个单位,要求最里面即最小的矩形宽、高分别为80和60,同时让屏幕停留5秒。

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填充此圆角矩形。

9.4基本绘图函数的应用 编辑源程序代码 :

9.4基本绘图函数的应用 Draw_HLine函数说明: Draw_VLine函数说明: Draw_Ellipse函数说明: Draw_Round函数说明:

9.5 图片与文字显示 常用的函数及功能 :

9.5 图片与文字显示 例9.6:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,加载位图b.bmp,并按照一定的顺序把位图排列显示。设程序名为9-6.c,存放在/home/cx/下,位图名为b.bmp也存放在该目录下。 编辑源程序代码:

9.5 图片与文字显示 SDL_LoadBMP函数说明: SDL_BlitSurface函数说明:

注意:文件保存的时候请使用UTF8格式保存,才能正常显示中文字体。 9.5 图片与文字显示 例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色。设程序名为9-7.c,存放在/home/cx/下。 准备工作:把windows下C:\WINDOWS\Fonts中的simsun.ttc文件拷贝到Linux下的/usr/share/fonts/下,用于显示中文。 编辑源程序代码: 注意:文件保存的时候请使用UTF8格式保存,才能正常显示中文字体。 思考题:编写一个程序,主要实现粗体,斜体,下划线等字体效果,同时让屏幕停留5秒。

9.6动画 动画的常用函数: 例9.8:设计一个程序,实现矩形的运动,矩形是通过位图显示,当矩形碰到四边时,会自动反弹,按任意键退出。按程序名为9-8.c,存放在/home/cx/下,位图素材(b.bmp)也存放在该目录下。

9.6动画 编辑源程序代码: 思考题:编写一个程序,主要实现圆球运动效果,使用键盘事件,按下Esc键退出程序。

9.7 三维绘图 三维绘图的常用函数:

9.7 三维绘图 例9.9:设计一个程序,在屏幕上绘制一个立体矩形,并按照一定的角度和方向旋转。设程序名为9-9.c,存放在/home/cx/下。 编辑源程序代码: 思考题: 编写一个程序,实现正方体的旋转方向为顺时针,并且使得旋转的速度加快,正方体的上下面颜色为红色,左右面颜色为绿色,前后面颜色为蓝色。(小提示:旋转的速度可以根据旋转的角度值改变量来实现)。 把例9.9中的正方体改成三棱锥。

9.8 游戏程序入门 例9.10:利用SDL库,综合运用以上所学的函数及方法,实现大炮打飞机的游戏。游戏初始化的时候大炮在屏幕底部中间,从屏幕的上方不断出现飞机,保持。可以使用键盘方向键控制大炮的左右移动,→表示向右,←表示向左。使用空格键发射炮弹。飞机水平运行,并逐渐往下移动,大炮弹若是击中飞机,爆炸,系统会立即再产生飞机,保证飞机数量为2架。假设飞机下降到大炮的位置,那么大炮就被炸毁,游戏结束。程序名为9-10.c,存放在/home/cx文件下。本题中用到的素材大炮、飞机、背景图片等放在data文件夹里,data文件夹放在/home/cx文件下。

9.8 游戏程序入门 编辑源程序代码: 思考题: 改写程序9-8.c,再画一块档板,可以用“←”、“→”键移动档板,移动档板,档住方块,使得方块不会与底边相碰。当方块与档板相碰时,方块反弹,游戏继续,积分加1;当方块与底边相碰时,游戏结束,显示积分值。 改写程序9-10.c,改变飞机、大炮的形状与数量,其余与题9-10.c类似。

思考与实验 参考SDL_draw库中关于椭圆的函数介绍,画一个椭圆。 利用画线,画圆和画矩形,自行创意设计三者结合的图形。 编写一个程序,运用绘图、位图与文字显示的知识,实现看图识字的效果。 参考例9.10,模仿飞机打大炮的原理,实现一个军舰发射鱼雷打怪物的游戏。要求军舰在屏幕上方,向下发射鱼雷,打击不断从屏幕下方出现的怪物,如果怪物上升到和军舰相碰的时候,游戏结束。