资源预览内容
第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
第9页 / 共39页
第10页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
清华大学 黄维通 设计制作1 第7章 图形设计与应用 清华大学 黄维通 设计制作2 本章主要内容 用C语言图形库函数绘图 复杂图形的绘制和图形程 序设计方法 清华大学 黄维通 设计制作3 图形化界面是软件的趋势 图形化界面具有界面友好 交互 性强的特点 但图形界面的开发 相对来说会麻烦一些 因此难度 也就大一些 一般来说 图形界 面的开发 经常与屏幕的分辨率 有关 清华大学 黄维通 设计制作4 7 1 用C语言图形库函数绘图 清华大学 黄维通 设计制作5 显示 器的 工作 方式 7 1 1 显示方式及图形方式的初始化 文本方式 图形方式 屏幕上显示的最小单 位是字符 不同的文 本方式对应相应的行 数 列数和颜色 左 上角位置为 1 1 一像素作为屏幕上的 最小单元 以屏幕的 左上角为原点 位置 为 0 0 清华大学 黄维通 设计制作6 例 用不同的字体和背景颜色显示ASCII码字符 include conio h void main int i j k for i 0 i 16 i for j 0 j 16 j textbackground i 置文本屏幕的背景色 0Black1Blue2Green textcolor j 置字符在文本屏幕上显示的颜色 0Black1Blue2Green for k 0 k 256 k if k 7 continue 不要响铃 cprintf c k 类似printf 写入当前文本屏幕而不是stdout 将格式化输出写到活动窗口中 getch 按任意键继续 颜色值 见教材 清华大学 黄维通 设计制作7 例 绘制右图 include conio h Screen handing functions include graphics h Graphics functions void main int x int gdriver DETECT gmode initgraph cleardevice 函数清屏 并复置当前位为0 0 setbkcolor 9 将背景色改为用color指定的颜色 9LightBLUE 在图形方式下 以屏幕的左上角为原点 向右为X轴正方向 向下为Y轴正方向 屏幕上的每一个点的位置就根据这个坐标系来确定 1 基本画线类函数的应用 清华大学 黄维通 设计制作8 for x 160 x选择Option菜单中的 Linker 选择Library 在对话框中选 中Graphics library 具体见附录 注意 清华大学 黄维通 设计制作9 例 将屏幕初始化成VGA高分辨率 include conio h Screen handing functions include Graphics functions void main int gdriver gmode gdriver VGA 图形驱动程序是VGA gmode VGAHI VGA高分辨率模式 initgraph 图形的初始 化 closegraph 关闭图形模式 清华大学 黄维通 设计制作10 例 用line和lineto函数画三角形 include Graphics functions include Screen handing functions void main int gd DETECT gm 图形初始化 initgraph line 0 0 639 240 给定两点画线 getch lineto 320 479 从当前位置到指定位置画线 getch lineto 639 240 getch closegraph 7 1 2常用图形函数 清华大学 黄维通 设计制作11 例 用8个弧画完整的椭圆 其中每画一个弧后按任 意键画下一段弧线 include include void main int s int gd DETECT gm initgraph setbkcolor 4 设置背景颜色 setcolor 10 设置椭圆的颜色 for s 0 s 360 s 45 每45度一个弧 ellipse 300 200 s s 45 250 100 getch 按任意键继续 closegraph 其它画弧函 数自己看书 上机实践 清华大学 黄维通 设计制作12 2 基本图形类函数的应用 void rectangle int x1 int y1 int x2 int y2 void circle int x int y int r void drawpoly int n int xy 2n 画折线 折线的顶 点个数 存放n个 顶点坐标 画矩形 清华大学 黄维通 设计制作13 例 画一个六边形 include include void main int gd DETECT gm n 7 int xy 150 5 0 190 150 380 300 380 450 190 300 5 150 5 initgraph drawpoly n xy getch closegraph 清华大学 黄维通 设计制作14 3 屏幕管理类函数的应用 void setviewport int x1 int y1 int x2 int y2 int clip 设置视 图区 决定裁剪否 若clip 1 图形输出将只显示在 视图区内 超出部分被 自动裁剪掉 若clip 0 将不会被裁剪掉 清华大学 黄维通 设计制作15 void clearviewport 清除视图区内显示的内容 void cleardevice 清屏函数 文本模式下的清屏函数是 clrscr cleardevice的作用是清除屏 幕上的所有内容 void moveto int x int y 把当前点定位于指定点 x y 清华大学 黄维通 设计制作16 例 用各种线型演示矩形和圆 include include void main int gd DETECT gm initgraph int i unsigned int t 0 for i 0 i 5 i if i 4 t 0 xABCD cleardevice setlinestyle i t 3 设置线的样式 rectangle 50 50 200 200 绘制矩形 circle 300 300 50 绘制圆 getch closegraph 4 图形属性控制类函数的应用 样式见 教材 清华大学 黄维通 设计制作17 例 演示填充效果 include include void main int gd DETECT gm initgraph setcolor 9 int i j for i 0 i 13 i for j 1 j 6 j cleardevice circle 200 200 150 setfillstyle i j 设置填充样式 floodfill 100 200 9 填充 getch if i 0 break closegraph 5 填充类函数的应用 清华大学 黄维通 设计制作18 例 函数rectangle bar bar3d的区别 include include void main int gd DETECT gm initgraph setbkcolor 1 设置背景色 setcolor 2 设置线条颜色 int i 清华大学 黄维通 设计制作19 for i 0 i 13 i cleardevice setfillstyle i 3 填充样式 rectangle 400 10 600 400 矩形 bar 10 10 300 100 bar3d 10 150 300 250 20 1 bar3d 10 300 300 400 20 0 getch closegraph 清华大学 黄维通 设计制作20 6 获取屏幕当前显示模式属性函数 例 获取屏幕属性 include include include void main int gd DETECT gm initgraph printf tthe current graphics driver is s n getdrivername 获取驱动名称 清华大学 黄维通 设计制作21 printf tthe current graphics mode number is d n getgraphmode 获取显示模式 printf t the current graphics mode is s getmodename getgraphmode 获取指向当前显示模式的字符串的指针 getch closegraph 清华大学 黄维通 设计制作22 7 图形方式下的文本输出 void settextstyle int font int direction int charsize HORIZ DIR 0 从左向右输出 默认 VERT DIR 0 从下向上输出 清华大学 黄维通 设计制作23 void outtext char string void outtextxy int x int y char string 函数outtext在当前位置按照 settextstyle中direction指定的方向输出 字符串指针string所指的字符串 清华大学 黄维通 设计制作24 void settextjustify int horiz int vert 在使用outtextxy进行文本输出时 字符串怎样根据 x y 确定位置呢 具体地说 是把第一个字符定位于 x y 呢 还是把最后一个字符定位 于 x y 呢 抑或是中间的呢 settextjustify函数解决了这个问题 对齐方式 见教材 清华大学 黄维通 设计制作25 void sprintf char string char format argument 图形方式下 outtext和outtextxy无 疑是最完善的输出方式 但是 这 两个函数的输出对象都是字符串 那么 如果要输出变量的值应该如 何做 sprintf函数解决了这个问题 清华大学 黄维通 设计制作26 例 利用改变字体大小和方向的方法实 现动画效果 include include include include void main int gd DETECT gm initgraph setbkcolor 3 设置背景颜色 setcolor 5 设置字体颜色 清华大学 黄维通 设计制作27 int i j x y char a 8 sprintf a Hello for i 0 i 11 i x 500 y 50 for j 1 j 11 j cleardevice x 15 y 15 settextstyle i 0 j 设置文本样式 settextjustify 1 1 设置对齐方式 outtextxy x y a 输出文本 delay 200 时间延迟200ms getch closegraph 清华大学 黄维通 设计制作28 void getimage int x1 int y1 int x2 int y2 void buf 把矩形区域内的图形复制到buf所指向的 内存区域 void putimage int x int y void buf int mode 把存储在buf所指向的内存区域中的图形 由函数getimage产生 复制到屏幕上 8 屏幕图像的存储与应用 mode 是屏幕模式 见教材 清华大学 黄维通 设计制作29 7 2复杂图形的绘制和图形程序 设计方法 清华大学 黄维通 设计制作30 例 给定一组实验数 据 根据数据的值绘制 曲线 假设有一组平均 分布在X轴上的数据 值为 4 9 8 3 13 9 23 32 39 8 48 9 57 0 68 78 79 7 99 2 用图形表示 清华大学 黄维通 设计制作31 include include include void main char cat 1 2 3 4 5 6 7 8 9 10 float a 4 9 8 3 13 9 23 32 39
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号