书签 分享 收藏 举报 版权申诉 / 99
上传文档赚钱

类型第二章C语言图形程序设计基础课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5064284
  • 上传时间:2023-02-07
  • 格式:PPT
  • 页数:99
  • 大小:630KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第二章C语言图形程序设计基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第二 语言 图形 程序设计 基础 课件
    资源描述:

    1、2/7/2023西安工程大学数学系1v 计算机图形学是一门实践性很强的课程。通过计算机图形学是一门实践性很强的课程。通过程序设计来完成图形的绘制,对深刻理解课程的程序设计来完成图形的绘制,对深刻理解课程的内容和相关概念非常重要。内容和相关概念非常重要。v 程序设计语言是进行计算机绘图的基础,现在程序设计语言是进行计算机绘图的基础,现在大多数高级语言都具有基本绘图功能。大多数高级语言都具有基本绘图功能。v 本章主要介绍本章主要介绍用用C语言进行图形程序设计的基语言进行图形程序设计的基本方法本方法和和C语言的图形功能语言的图形功能,使大家对,使大家对C语言的图语言的图形应用有一个较深刻的理解。形应

    2、用有一个较深刻的理解。WINTC 第三章第三章 C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系2 3.1、屏幕设置、屏幕设置v我们在屏幕上进行绘制图形,一般要按以下几个步骤我们在屏幕上进行绘制图形,一般要按以下几个步骤执行:执行:(1)把屏幕设置为图形模式;)把屏幕设置为图形模式;(2)选择背景与显示实体的颜色;)选择背景与显示实体的颜色;(3)计算图形显示坐标;)计算图形显示坐标;(4)调用绘图语句绘制实体)调用绘图语句绘制实体3.1.1、屏幕显示模式与坐标系、屏幕显示模式与坐标系 在屏幕上只能显示字符的方式称为文本模式在屏幕上只能显示字符的方式称为文本模式。在

    3、文本模。在文本模式下,屏幕上可以显示的最小单位是字符。为了能在指定式下,屏幕上可以显示的最小单位是字符。为了能在指定的位置显示每个字符,的位置显示每个字符,C语言提供了语言提供了字符坐标系字符坐标系。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系3v字符坐标系字符坐标系是以屏幕的左上角为坐标原点,水平方向为是以屏幕的左上角为坐标原点,水平方向为 X轴,垂直方向为轴,垂直方向为Y轴,如下图轴,如下图-1所示:所示:图图-1 字符坐标系字符坐标系Max xMax y(1,1)注:字符坐标系的原点为(注:字符坐标系的原点为(1,1),水平方向(),水平方向(X轴)分为若

    4、干列,垂直方向轴)分为若干列,垂直方向(Y轴)分为若干行,用一对坐标可以指定屏幕上一个位置。轴)分为若干行,用一对坐标可以指定屏幕上一个位置。(8,20)表示字符表示字符位于屏幕位于屏幕的第的第8行行第第20列列C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系4 (1)BW40:黑白:黑白40列方式。显示列方式。显示25行文本,其中每行行文本,其中每行40个个字符,以黑白两色显示。字符,以黑白两色显示。(2)C40:彩色:彩色40列方式。可显示列方式。可显示40列列25行彩色字符。行彩色字符。(3)BW80:黑白:黑白80列方式。可显示列方式。可显示80列列25行字

    5、符。行字符。(4)C80:彩色:彩色80列列25行显示方式。行显示方式。(5)MONO:单色:单色80列列25行显示方式。行显示方式。(6)C4350:一种特殊的彩色文本方式,适和:一种特殊的彩色文本方式,适和EGA和和VGA两两种适配器。种适配器。若用若用EGA适配器,显示适配器,显示80列列43行;若用行;若用VGA适适配器,则显示配器,则显示80列列50行行。C语言图形程序设计基础语言图形程序设计基础由于由于显示模式显示模式的不同的不同,所显示的字符的列数和行数以及颜色也不所显示的字符的列数和行数以及颜色也不相同。相同。C支持以下支持以下6种不同的显示方式。种不同的显示方式。2/7/20

    6、23西安工程大学数学系5在不同的显示模式下,屏幕所显示的字符数量也不一样。在不同的显示模式下,屏幕所显示的字符数量也不一样。X方向一般为方向一般为40列或列或80列,列,Y方向一般为方向一般为25行,但行,但EGA和和VGA适配器可达适配器可达43行或行或50行。行。在文本模式下,屏幕最多可显示在文本模式下,屏幕最多可显示80X50=4000个字符,至个字符,至少可显示少可显示40X25=1000个字符。显示字符越多,每个字符个字符。显示字符越多,每个字符尺寸越小,反之越大尺寸越小,反之越大。显示模式不同,屏幕坐标的构成也不相同。比如:显示模式不同,屏幕坐标的构成也不相同。比如:(1)在)在B

    7、W40方式下,最大坐标位置为(方式下,最大坐标位置为(25,40););(2)在)在C4350方式下,最大坐标位置为(方式下,最大坐标位置为(50,80););注:注:C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系6 在屏幕上显示图形的方式称为图形模式在屏幕上显示图形的方式称为图形模式。在图形。在图形模式下模式下,屏幕是由像素点组成的屏幕是由像素点组成的,像素点的多少决定像素点的多少决定了屏幕的分辨率。分辨率越高了屏幕的分辨率。分辨率越高,显示图形越细致显示图形越细致,质质量越好。量越好。v如右图所示1.屏幕由许多像素点屏幕由许多像素点组成;组成;2.图形的显示效

    8、果取图形的显示效果取决于分辨率的高低;决于分辨率的高低;C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系7v例如:例如:CGA显示器的分辨率为显示器的分辨率为300X200,TVG显显示器的分辨率为示器的分辨率为1024X768,TVGA比比CGA分率高。分率高。图图-2 点坐标系点坐标系Max xMax y(0,0)注:点坐标系坐标值的注:点坐标系坐标值的范围取决于所用的范围取决于所用的适配适配器器/显示分辨率显示分辨率C语言图形程序设计基础语言图形程序设计基础v 在图形模式下,屏幕上每个像素的显示位置用点在图形模式下,屏幕上每个像素的显示位置用点 坐标来描述的。

    9、点坐标系坐标来描述的。点坐标系是以屏幕左上角为坐标原点是以屏幕左上角为坐标原点(0,0),水平方向为),水平方向为X轴,自左向右;垂直方向为轴,自左向右;垂直方向为Y轴,自上向下轴,自上向下。如下图所示:。如下图所示:2/7/2023西安工程大学数学系8v由于屏幕的分辨率不同,水平方向和垂直方向的点数也由于屏幕的分辨率不同,水平方向和垂直方向的点数也不一样,从而不一样,从而点坐标系的点坐标系的Max x、Max y 数值数值也不也不同。同。v在在C程序中,坐标数据可以用两种形式给出:程序中,坐标数据可以用两种形式给出:一种是绝对一种是绝对坐标,另一种是相对坐标。坐标,另一种是相对坐标。(1)绝

    10、对坐标绝对坐标的参考点是坐标的原点(的参考点是坐标的原点(0,0),),x和和y只只能取规定范围(能取规定范围(0,Max x)和()和(0,Max y)内的正整)内的正整数;数;(2)相对坐标相对坐标是相对是相对“当前点当前点”的坐标,其坐标的参考的坐标,其坐标的参考点是当前点。在相对坐标中,点是当前点。在相对坐标中,x和和y的取值是相对当前点的取值是相对当前点在在x方向和方向和y方向上的增量,故方向上的增量,故x和和y可以为正整数,也可可以为正整数,也可以为负整数。以为负整数。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系93.1.2、图形驱动程序与图形模式、

    11、图形驱动程序与图形模式 对于不同的图形显示器,其控制方式各有差异,对于不同的图形显示器,其控制方式各有差异,因此要因此要显示图形就需要先装入相应的图形驱动程序显示图形就需要先装入相应的图形驱动程序。C 支持以下支持以下几种图形驱动程序:几种图形驱动程序:符号常量符号常量 数值数值 符号常量符号常量 数值数值DETECT0IBM85146CGA1HERCMONO7MCGA2ATT4008EGA3VGA9EGA644PC327010EGAMONO5C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系10 由于每种图形显示器都有几种不同的图形显示模式,所由于每种图形显示器都有

    12、几种不同的图形显示模式,所以要显示图形,不但要先以要显示图形,不但要先装入相应的驱动程序装入相应的驱动程序,而且还要,而且还要决定所用的显示模式决定所用的显示模式。C 语言程序常采用的几种图形驱动语言程序常采用的几种图形驱动程序及相应的模式程序及相应的模式驱动程序驱动程序(driver)图形(图形(gmode)等价值等价值分辨(分辨(dpi)CGAC00320X200CGAC11320X200CGAC22320X200CGAC33320X200CGAHI4640X200表表2.2 图形驱动程序及相应的模式图形驱动程序及相应的模式C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程

    13、大学数学系11驱动程序驱动程序(driver)图形(图形(gmode)等价值等价值分辨(分辨(dpi)EGAEGAHI0640X200EGALO1640X350VGALO0640X200VGAVGAMED1640X350VGAHI2640X480v注注:1.不同的图形驱动程序有不同的图形模式不同的图形驱动程序有不同的图形模式;2.同一图形驱动程序同一图形驱动程序,也可能会有几种图形也可能会有几种图形模式模式;C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系12vC提供了十分丰富的图形库函数,共有提供了十分丰富的图形库函数,共有70多个,所有多个,所有图形函数的原型均

    14、在头文件图形函数的原型均在头文件“graphics.h”中定义。所中定义。所以,在任何使用图形函数的程序中,都要求其头部包以,在任何使用图形函数的程序中,都要求其头部包含文件含文件graphics.h,即在程序文件的开头写上文件包,即在程序文件的开头写上文件包含命令:含命令:#include 同时将集成开发环境同时将集成开发环境option/Linker中的中的graphics.lib选项设置为选项设置为”on”。下面我们介绍:下面我们介绍:图形系统的初始化图形系统的初始化、图形系统的关闭图形系统的关闭、图形模式控制。图形模式控制。3.1.3、图形系统初始化和模式控制、图形系统初始化和模式控制

    15、C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系13v图形系统初始化首先要调用图形系统初始化首先要调用initgraph()函数函数,它通过它通过从磁盘上装入一个图形驱动程序来初始化图形系统从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为并将系统设置为图图。图形系统的初始化图形系统的初始化 图形模式是有别于文本模式的一种计算机屏幕显示模图形模式是有别于文本模式的一种计算机屏幕显示模式。屏幕一般在默认情况下为式。屏幕一般在默认情况下为80列列25行的文本模式,行的文本模式,在文本模式下,所有的图形函数均不能操作,在文本模式下,所有的图形函数均不能操作,因此

    16、在使因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为一用图形函数绘图之前,必须将屏幕显示适配器设置为一种图形模式,即为种图形模式,即为图形初始化过程。图形初始化过程。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系14功能功能 将图形驱动软件装入内存,使屏幕显示适配器设置为图形模式,即图形系统初始化;说明说明 1.gdriver是一个整型值,用来指定要装入的图形驱动程序;该值在头文件graphics.h中定义;中定义;2.gmode是一个整型值,用来设置图形显示模式。图形显示模式决定了显示的分辨率和显示的颜色的多少等;3.path是一个字符串,用来指明图形驱动

    17、程序所在的路径.1.若驱动程序就在用户当前目录下,则若驱动程序就在用户当前目录下,则path可为空字符串,否则应可为空字符串,否则应给出具体路径名给出具体路径名。一般情况下一般情况下,TurboC安装在安装在C盘的盘的TC目录中,则该目录中,则该路径为:路径为:C:TC,若写在参数中则为若写在参数中则为“C:TC”;2.前两个参数实际上是整型指针,调用时应加上地址运算符前两个参数实际上是整型指针,调用时应加上地址运算符“&”;注:注:initgraph()函数函数格式格式 void far initgraph(int*gdriver,int*gmode,char*path);C语言图形程序设计

    18、基础语言图形程序设计基础2/7/2023西安工程大学数学系15(1)已知显示器类型的图形系统初始化)已知显示器类型的图形系统初始化。如果已经知道所用图形显示器的种类和要使用的图形模式如果已经知道所用图形显示器的种类和要使用的图形模式则图形系统的初始化可用下面程序,例如:则图形系统的初始化可用下面程序,例如:例例1 画一实心矩形画一实心矩形#includegraphics.h main()int gdriver,gmode;v gdriver=CGA;/*设置显示模式设置显示模式CGA*/v gmode=CGAC0;/*选用选用CGA图形模式图形模式*/v initgraph(&gdriver,

    19、&gmode,“D:TC);v /*初始化图形系统初始化图形系统*/C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系16v bar3d(10,20,50,80,0,0);/*画一条形图画一条形图*/v getch();/*等待按一键结束等待按一键结束*/v closegraph();/*关闭图形系统,回到文本模式关闭图形系统,回到文本模式*/bar3d()函数函数 格式格式:void bar3d(int x1,int y1,int x2,int y2,int x1,int y1,int x2,int y2,int depth,int topflag int dept

    20、h,int topflag);功能功能:画一填充的画一填充的三维条形图三维条形图;说明说明:depth:depth为条形的深度为条形的深度;topflag=0;topflag=0则不加顶则不加顶,否否 则在条形图上加一个顶。则在条形图上加一个顶。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系17格式格式 void far detectgraph(int*gdriver,int*gmode);功能功能 在计算机有图形适配器的情况下,确定图形适配器在计算机有图形适配器的情况下,确定图形适配器的类型;的类型;说明说明 1.若系统有图形适配器,则把若系统有图形适配器,则把

    21、gdriver指的变量设置指的变量设置为适合于适配器的为适合于适配器的图形驱动程序的代码图形驱动程序的代码,并把,并把gmode所所指的变量设置为适配器所能支持的指的变量设置为适配器所能支持的最高分辨率最高分辨率。2.若系统若系统无图形适配器无图形适配器,则则gdriver所指的变量为所指的变量为-2.(2)不知显示器类型的图形系统初始化。)不知显示器类型的图形系统初始化。若在编写程序过程中,不知道当前系统屏幕硬件的若在编写程序过程中,不知道当前系统屏幕硬件的类型或编写的程序要用于不同的图形显示器,这就要类型或编写的程序要用于不同的图形显示器,这就要求所编程序能知当前图形显示器的代码,求所编程

    22、序能知当前图形显示器的代码,Turbo C供供了一个对图形显示器硬件测试的函数了一个对图形显示器硬件测试的函数detectgraph()。detectgraph()函数函数C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系18v例例2、测试硬件显示模式和绘制图形测试硬件显示模式和绘制图形#include graphics.h main()int gdriver,gmode;detectgraph(&gdriver,&gmode);/*测试结果存放于测试结果存放于 gdriver,gmode中中*/if(gdriver0)printf(there is not grap

    23、hics displayern);exit(1);/*无图形显示模式时,显示信息,停止程序无图形显示模式时,显示信息,停止程序*/printf(detect graphics driver is#%d,mode is#%d n,gdriver,gmode);/*显示硬件测试结果显示硬件测试结果*/getch();/*等待按一键结束等待按一键结束*/C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系19 initgraph(&gdriver,&gmode,c:tc);/*初始化图形系统初始化图形系统*/bar3d(10,20,50,80,10,1);getch();/*

    24、等待按一键结束等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系20v例例3自动搜索显示类型和模式并初始化画图自动搜索显示类型和模式并初始化画图#includegraphics.h main()(3)自动初始化图形系统。)自动初始化图形系统。一般在程序设计中一般在程序设计中,可以把对图形显示器的检测可以把对图形显示器的检测和和初始化工作放在一起来自动完成初始化工作放在一起来自动完成,规定规定Gdriver=DETECT,则则initgraph()

    25、函数会自动按照系统所配置函数会自动按照系统所配置的图形显示器来确定驱动程序的图形显示器来确定驱动程序,并把图形模式设置为并把图形模式设置为检测到的驱动程序的最高分辨率检测到的驱动程序的最高分辨率,实现图形系统的初实现图形系统的初始化始化.C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系21 int gdriver=DETECT,gmode;/*自动搜索显示器类型和显示模式自动搜索显示器类型和显示模式*/initgraph(&gdriver,&gmode,“C:TC);/*初始化图形系统初始化图形系统*/bar3d(10,20,50,80,10,1);/*画一三维立体

    26、有顶矩形画一三维立体有顶矩形*/getch();/*等待按一键结束等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系22图形系统的关闭图形系统的关闭 在图形编程中,我们均用函数在图形编程中,我们均用函数initgraph()对图形系统对图形系统进行进行初始化初始化,即启动图形系统即启动图形系统,进入绘图状态进入绘图状态,在程序结束在程序结束时都用函数时都用函数closegraph()关闭图形系统关闭图形系统。closegraph()函数函数v格式

    27、格式 void far closegraph();v功能功能 关闭图形模式。关闭图形模式。v说明说明 函数函数closegraph()用来关闭图形模式,用来关闭图形模式,释放用于保存图形驱动程序和字体所占用的内释放用于保存图形驱动程序和字体所占用的内存空间。当一个程序需要从图形模式下退出,存空间。当一个程序需要从图形模式下退出,且回到文本模式下继续运行时可调用该函数。且回到文本模式下继续运行时可调用该函数。注:注:所有有关图形显示的程序一定是在所有有关图形显示的程序一定是在initgraph()和和closegraph()之间之间。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安

    28、工程大学数学系23图形模式的控制图形模式的控制 为了对图形模式进行控制,即为了对图形模式进行控制,即 1.从图形模式转换成文本模式,或从文本模式转换成图从图形模式转换成文本模式,或从文本模式转换成图 形模式;形模式;2.设置驱动器有效模式或读取当前图形模式和范围。设置驱动器有效模式或读取当前图形模式和范围。TurboC都提供了相关的函数来实现其控制。1.getgraphmode()函数函数v格式格式 void far getgraphmode(void);v功能功能 返回当前图形模式值,其返回值如前表所示。返回当前图形模式值,其返回值如前表所示。C语言图形程序设计基础语言图形程序设计基础2/7

    29、/2023西安工程大学数学系24v功能功能 恢复屏幕在图形初始化前的模式恢复屏幕在图形初始化前的模式。v说明说明 该函数使该函数使initgraph()函数所选定图形模式关闭函数所选定图形模式关闭,返返回到调用回到调用initgraph()前的状态前的状态。注意它与。注意它与closegraph()函数函数的区别。的区别。3.setgraphmode()函数函数v格式格式 void far setgraphmode(int gmode);v功能功能 设置系统图形模式并清屏幕设置系统图形模式并清屏幕。v说明说明 该函数把当前的图形模式设置为该函数把当前的图形模式设置为gmode所指定的模式。所指

    30、定的模式。C语言图形程序设计基础语言图形程序设计基础2.restorecrtmode()函数函数v格式格式 void far restorecrtmode(void);2/7/2023西安工程大学数学系25注注:通过调用以上函数,可实现使显示器暂时离开图形模式进入文本模式,进行文本输出,然后不经过initgraph()函数再返回图形模式的功能.4.getmoderange()函数函数v格式格式 void far getmoderange(int driver,int*lomode,int *himode);v功能功能 获取图形驱动器可使用的模式范围获取图形驱动器可使用的模式范围。v说明说明 该

    31、函数可以确定该函数可以确定由由driver所指定图形驱动器所指定图形驱动器能够支持的最低和最高模式能够支持的最低和最高模式,并将这些值放在由并将这些值放在由lomode和和himode所指向的变量中所指向的变量中.C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系26include graphics.h#include stdio.h#include stdlib.hmain()int gdriver,gmode,lo,hi;gdriver=CGA;/*设置显示模式为设置显示模式为CGA*/getmoderange(CGA,&lo,&hi);/*获得获得CGA的图形模

    32、式范围的图形模式范围*/printf(CGA surpporting modes range from%d to%d.n,lo,hi);/*显示显示CGA的显示模式范围的显示模式范围/initgraph(&gdriver,&lo,c:tc);/*初始化初始化CGAC0图形系统图形系统*/bar3d(100,30,130,150,0,0);C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系27 getch();/*等待按一键结束等待按一键结束*/gmode=getgraphmode();/*获得现行图形模式获得现行图形模式*/restorecrtmode();/*返回图

    33、形初始化前的现实模式返回图形初始化前的现实模式*/printf(NOW in text mode,press any key back to graphics mode.n);getch();setgraphmode(gmode);/*再回到图形模式再回到图形模式*/rectangle(50,30,100,130);/*画一矩形画一矩形*/getch();closegraph();/*关闭图形系统,回到文本模式关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系28v我们在画图时需要运用光标定点我们在画图时需要运用光标定

    34、点,即确定坐标位置。当屏即确定坐标位置。当屏幕处于文本状态时,左上角坐标原点为(幕处于文本状态时,左上角坐标原点为(1,1);而在图);而在图形模式下形模式下,以左上角为坐标原点(以左上角为坐标原点(0,0),水平方向向右),水平方向向右为为X轴,垂直方向向下为轴,垂直方向向下为Y轴轴。v由于图形显示器和显示模式的不同由于图形显示器和显示模式的不同,x、y坐标的最大值也坐标的最大值也就不同,就不同,可利用可利用TurboC提供的函数来提供的函数来设定坐标设定坐标(定点定点),),读取当前光标的位置读取当前光标的位置以及以及x、y轴的最大值轴的最大值。3.1.4、图形坐标的设置、图形坐标的设置m

    35、oveto()函数函数v格式格式 void far moveto(int x,int y);v功能功能 把当前光标移到所需的位置(把当前光标移到所需的位置(x,y)。)。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系29v说明说明 该函数把当前窗口中的当前该函数把当前窗口中的当前光标位置(光标位置(CP)移到所需的(移到所需的(x,y)位置。)位置。注:不是画线注:不是画线。v例如:moveto(100,100)表示把当前光标移到点(100,100)位置上。moverel()函数函数v格式格式 void far moverel(int deltax,int del

    36、tay);v功能功能 以增量方式移动当前光标。以增量方式移动当前光标。v说明说明 此函数把光标从当前位置此函数把光标从当前位置(CP)开始开始,在在x,y方向分别移动方向分别移动deltax和和 deltay,即由即由(x,y)(x+deltax,y+deltay).v例如:若当前光标在(10,10)位置,执行moverel(10,20)后即移到(20,30)的位置上.C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系30n注:moveto(10,20)表示把当前光标移到点(10,20)位置上。n moverel(10,20)后即移到(20,30)的位置上.Max x

    37、Max y(0,0)(10,10)(10,20)(20,30)当前光标movetomoverelC语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系31v例如:语句例如:语句printf(“cps loc:%d%d”,getx(),gety();显示光标当前位置的显示光标当前位置的x值值getx()函数函数v格式格式 int far getx(void);v功能功能 读取当前光标在读取当前光标在x轴的位置。轴的位置。gety()函数函数v格式格式 int far gety(void);v功能功能 读取当前光标在读取当前光标在y轴的位置。轴的位置。C语言图形程序设计基础语

    38、言图形程序设计基础2/7/2023西安工程大学数学系32程序:#include stdio.h#include conio.hgetmaxx()函数函数v格式格式 int far getmaxx(void);v功能功能 读取当前光标在读取当前光标在x轴的最大值。轴的最大值。getmaxy()函数函数v格式格式 int far getmaxy(void);v功能功能 读取当前光标在读取当前光标在y轴的最大值。轴的最大值。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系33v#include graphics.h vvoid main()vv int gdriver,g

    39、mode;v gdriver=CGA;v gmode=CGAC0;v initgraph(&gdriver,&gmode,);v printf(max x,y is%d,%d,getmaxx(),getmaxy();v getch();vv输出结果为;max x,y is 319,199为什么?C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系343.2图形颜色设置图形颜色设置v 在绘图时,往往要求配置一定的颜色加在绘图时,往往要求配置一定的颜色加以渲染在绘图系统中颜色分为以渲染在绘图系统中颜色分为前景色前景色和背景色和背景色。v前景色前景色是指构成字符和图形点的颜色

    40、是指构成字符和图形点的颜色,而而背景色背景色是指整个显示屏幕的颜色是指整个显示屏幕的颜色。vC语言提供了多个颜色控制函数来设置前语言提供了多个颜色控制函数来设置前景色、背景色等。景色、背景色等。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系35设置当前背景色设置当前背景色setbkcolor()函数函数v格式格式 void far setbkcolor(int color);v功能功能 设置当前背景颜色。设置当前背景颜色。v说明说明该函数将背景色设置成该函数将背景色设置成color 所指定的颜色值所指定的颜色值。参数参数color可以用名字,也可以用数字可以用名字

    41、,也可以用数字,它们的对应关系在,它们的对应关系在graphics.h 中定义。如下表:中定义。如下表:符号常量数值含义BLACK0黑色BLUE1蓝色GREEN2绿色Color取值可以由0到15C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系36设置当前画图颜色设置当前画图颜色setcolor()函数函数v格式格式 void far setcolor(int color);v功能功能 设置当前画图颜色。设置当前画图颜色。v说明说明该函数把当前画图颜色设置成该函数把当前画图颜色设置成color 所指定的颜所指定的颜色值,即画笔的颜色色值,即画笔的颜色。参数参数colo

    42、r可以用名字,也可以用数可以用名字,也可以用数字,字,但当缺省时,默认是白色但当缺省时,默认是白色。C语言图形程序设计基础语言图形程序设计基础3.获取颜色信息获取颜色信息getbkcolor()函数函数v格式格式 int far getbkcolor(void);v功能功能 读取当前背景颜色。读取当前背景颜色。v说明说明该函数返回当前背景颜色。该函数返回当前背景颜色。2/7/2023西安工程大学数学系373.获取颜色信息获取颜色信息getcolor()函数函数v格式格式 int far getcolor(void);v功能功能 读取当前画图颜色。读取当前画图颜色。v说明说明该函数返回当前画笔颜

    43、色。该函数返回当前画笔颜色。C语言图形程序设计基础语言图形程序设计基础putpixel()函数函数v格式格式 void far putpixel(int x,int y,int color);v功能功能 在点在点(x,y)处画一规定颜色的点。处画一规定颜色的点。v说明说明该函数把该函数把color 所指定的颜色写到所指定的颜色写到(x,y)处的像素处的像素上。例如:语句上。例如:语句putpixel(10,20,GREEN)使点使点(10,20)的像的像素成为绿色。素成为绿色。2/7/2023西安工程大学数学系38getpixel()函数函数v格式格式 int far getpixel(int

    44、 x,int y);v功能功能 读取点读取点(x,y)的颜色。的颜色。v说明说明该函数返回指定点该函数返回指定点(x,y)位置上的像素颜位置上的像素颜色值。色值。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系39v#include graphics.hv#include conio.hvvoid main()vint gdriver=DETECT,gmode;v int color,i,max;v initgraph(&gdriver,&gmode,);/*初始化图形系统*/v max=getmaxcolor();v for(i=0;i20;i+)v putpix

    45、el(50+i*10,20,max);v color=getpixel(50,20);v putpixel(150,150,color);v getch();v closegraph();例例6、在不同位置画点在不同位置画点 C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系40 line()函数函数n格式格式 void far line(int x1,int y1,int x2,int y2);n功能功能 指定两点间画一直线。指定两点间画一直线。n说明说明 该函数用当前颜色从点该函数用当前颜色从点(x1,y1)到点到点(x2,y2)画一条直画一条直线,当前位置线,当

    46、前位置(CP)不变。不变。直线类函数直线类函数 lineto()函数函数n格式格式 void far lineto(int x,int y);n功能功能 从当前位置到点从当前位置到点(x,y)画一条直线。画一条直线。n说明说明 并把当前位置并把当前位置(CP)定位在点定位在点(x,y)处。处。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系41 linerel()函数函数n格式格式 void far linerel(int deltax,int deltay);n功能功能 从当前位置相对从当前位置相对CP位置在位置在X方向增大方向增大deltax,在,在Y方向增大方

    47、向增大deltay处画一直线。处画一直线。线的特性设定线的特性设定 我们在用画线函数画线时,其我们在用画线函数画线时,其默认值均属于一默认值均属于一个像素点宽度的实线个像素点宽度的实线。但往往有时需要改变线型和。但往往有时需要改变线型和线的宽度,线的宽度,C语言提供了一些可以改变线型和线宽语言提供了一些可以改变线型和线宽的函数,具体如下:的函数,具体如下:C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系42setlinestyle()函数函数v格式格式 void far setlinestyle(int linestyle,unsigned pattern,int

    48、width);v功能功能 改变线型和线宽。改变线型和线宽。v说明说明该函数所用的该函数所用的3个参数具体含义为:个参数具体含义为:1linestyle为整型值,用来定义所画直线类型,为整型值,用来定义所画直线类型,如下表所示:如下表所示:C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系43代号名代号名代号代号说明说明SOLID_LINE0实线实线DOTTEN_LINE1点线点线CENTER_LINE2中心线中心线DASHED_LINE3虚线虚线USERBIT_LINE4用户定义的线型用户定义的线型注注:表中前表中前4种为系统预定的类型种为系统预定的类型,第第5种为用

    49、户自定义类型种为用户自定义类型2pattern为无符号整型数。该参数在需要用为无符号整型数。该参数在需要用户自定义线型时才使用,户自定义线型时才使用,若是使用前四种系统预若是使用前四种系统预定义的线型,则该参数可取定义的线型,则该参数可取0值值。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系443 width为整型数。主要用来为整型数。主要用来指定所画直线的指定所画直线的粗细,以像素为单位,分两种情况粗细,以像素为单位,分两种情况,如下表所示:,如下表所示:符号常量符号常量值值含义含义NORM_WIDTH11个像素宽(缺省)个像素宽(缺省)THICK_WIDTH3

    50、3个像素宽个像素宽注注:通过上述通过上述3个参数的不同组合,可以根据需要画出不同类型、个参数的不同组合,可以根据需要画出不同类型、不用粗细的直线。不用粗细的直线。C语言图形程序设计基础语言图形程序设计基础2/7/2023西安工程大学数学系45v例如:从点例如:从点(10,20)到到(150,70)画一条画一条红色的点划线红色的点划线可用下面的语句可用下面的语句:setcolor(RED);setlinestyle(DASHED_LINE,0,THICK_WIDTH);line(10,10,150,100);v注意:当函数注意:当函数setlinestyle的第一个参数为的第一个参数为USERB

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第二章C语言图形程序设计基础课件.ppt
    链接地址:https://www.163wenku.com/p-5064284.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库