版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——C语言中绘图的函数库全解C语言中绘图的函数库
图形和图像函数包含在graphics.h里面
(一)像素函数
56.putpiel()画像素点函数57.getpixel()返回像素色函数(二)直线和线型函数58.line()画线函数59.lineto()画线函数
60.linerel()相对画线函数
61.setlinestyle()设置线型函数
62.getlinesettings()获取线型设置函数63.setwritemode()设置画线模式函数(三)、多边形函数
64.rectangle()画矩形函数65.bar()画条函数66.bar3d()画条块函数
67.drawpoly()画多边形函数(四)、圆、弧和曲线函数
68.getaspectratio()获取纵横比函数69.circle()画圆函数70.arc()画圆弧函数
71.ellipse()画椭圆弧函数
72.fillellipse()画椭圆区函数73.pieslice()画扇区函数74.sector()画椭圆扇区函数
75.getarccoords()获取圆弧坐标函数
(一)像素函数
56.putpixel()画像素点函数
功能:函数putpixel()在图形模式下屏幕上画一个像素点。
用法:函数调用方式为voidputpixel(intx,inty,intcolor);
说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色调值。
此函数相应的头文件是graphics.h返回值:无
例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);
(二)直线和线型函数
有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,假使视口裁剪标志clip为真,那么直线将受到视口边缘截断;假使clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。
58.line()画线函数
功能:函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。用法:该函数调用方式为voidline(intstartx,intstarty,intendx,intendy);说明:参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。此函数相应的头文件为graphics.h返回值:无
例:见函数60.linerel()中的实例。
59.lineto()画线函数
功能:函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。
用法:此函数调用方式为voidlineto(intx,inty);
说明:参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。该函数对应的头文件为graphics.h返回值:无
例:见函数60.linerel()中的实例。
60.linerel()相对画线函数
功能:函数linerel()使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。
用法:这个函数调用方式为voidlinerel(intdx,intdy);说明:参数dx,dy分别是水平偏移距离和垂直偏移距离。
函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。返回值:无
例:下面的程序为画线函数调用实例:#includevoidmain(){
intdriver,mode;driver=DETECT;mode=0;
initgraph(
line(66,66,88,88);
lineto(100,100);linerel(36,64);getch();
restorecrtmode();}
61.setlinestyle()设置线型函数
功能:setlinestyle()为画线函数设置当前线型,包括线型、线图样和线宽。用法:setlinestyle()函数调用方式为voidsetlinestyle(intstly,unsignedpattern,intwidth);
说明:参数style为线型取值,也可以用相应名称表示,如表1-10中所示。参数pattern用于自定义线图样,它是16位(bit)字,只有当
style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1〞位对应的像素显示,因此,pattern=0xFFFF,则画实线;pattern=0x9999,则画每隔两个像素交替显示的虚线,假使要画长虚线,那么pattern的值可为0xFF00和0xF00F,当style不为USERBIT_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。
参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线宽取值为2也是可以接受的。
若用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。
TurboC提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。
表1-10线型
名称取值含义
SOLID_LINE0实线DOTTED_LINE1点线CNTER_LINE2中心线DASHED_LINE3虚线
USERBIT_LINE4用户自定义线型
表1-11线宽
名称取值说明
NORM_WIDTH(常宽)1一个像素宽(缺省值)THICK_WIDTH(加宽)3三个像素宽
这个函数的头文件是graphics.h
返回值:无
例:下面的程序显示了BC中所提供的线型图样:#includevoidmain(){
intdriver,mode;driver=DETECT;mode=0;
initgraph(ivoidmain(){
intdriver,mode;driver=DETECT;mode=0;
initgrpah(rectangle(140,99,180,300);rectangle(6,6,88,88);
rectangle(168,72,260,360);getch();
restorecrtmode();}
65.bar()画条函数
功能:函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线)。用法:bar()函数调用方式为voidbar(intleft,inttop,intright,intbottom);说明:参数left,topright,bottom分别为左上角坐标与右下角坐标,它们和调用函数rectangle()的情形一致,调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。
注意此函数只画没有边线的条形,假使要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。
这应的头文件为graphics.h返回值:无
例:见函数bar3d()中的实例。
66.bar3d()画条块函数
功能:函数bar3d()使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填充色填充该三维条块的表面。
用法:此函数调用方式为voidbar3d(intleft,inttop,intright,intbottom,intdepth,inttopflag);
说明:参数left,top,right,bottom分另为左上角与右下角坐标,这与bar()函数中的一样。参数depth为条块的深度,以像素为单位,寻常按宽度的四分之一计算。深度方向通过屏显纵横比调理为约45度(即这时x/y比设置为1:1)。参数topflag相当于一个布尔参数,假使设置为1(真)那么条块上放一顶面;若设置为0(假),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。要使图形更加美观,可利用函数floodfill()或setfillpattern()来选择填充图样和填充色(参见本小节(五)填充函数)。bar3d()函数对应的头文件为graphics.h返回值:无
例:下面的程序画一个条形和条块:#includevoidmain(){
intdriver,mode;driver=DETECT;mode=0;
initgraph(bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);bar3d(260,180,360,240,20,1);getch();
restorecrtmode();}
(四)、圆、弧和曲线函数
在一个屏幕上画得很圆的图形到另一个屏幕上可能被压扁或拉长,这是由于每一种显示卡与之相应的显示模式都有一个纵横比。纵横比是指像素的水平方向大小与垂直方向大小的比值。如VGA显示卡由于偈素基本上是正方形,所以纵横比为1.000。
为了保证几何图形基本按预计状况显示在屏幕上,用屏显的纵横比来计算和改正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。
69.circle()画圆函数
功能:函数circle()使用当前绘图色并以实线画一个完整的圆。用法:该函数调用方式为voidcircle(intx,inty,intradius);
说明:参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。
不同于ellipse()函数,只用单个半径radius参数调用circle()函数,故屏显纵横比可以自动调理,以产生正确的显示图。此函数对应的头文件为graphics.h返回值:无
例:画六个同心圆,圆心在(100,100)。#includevoidmain(){
intdriver,mode;driver=DETECT;mode=0;
initgraph(circle(100,100,20);circle(100,100,30);circle(100,100,40);circle(100,100,50);circle(100,100,60);getch();
restorecrtmode();}
70.arc()画圆弧函数
功能:函数arc()使用当前绘图色并以实线画一圆弧。
用法:函数调用方式为voidarc(intx,inty,intstartangle,intendangle,intradius);
说明:参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同平日一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。
例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理社区护理学
- 护理纠纷预防的成效评估
- 剖腹产后伤口护理要点
- 护理课件制作工具体验
- 旅游公司市场部经理的招聘要点与技巧
- 零售业门店管理岗位店长面试要点参考
- 快手内容运营面试技巧
- 基于云计算的XX服务解决方案研究报告
- 客户服务代表的心理调适与压力管理
- 即时编译加速引擎在大数据分析中的应用
- 双向情感障碍课件
- 饲料厂6S管理标准
- 设备隔离网施工方案
- 苏州大学应用技术学院《大学英语》2025学年第二学期期末试卷(A卷)
- 2025 小学学校美术老师教课内容社会研究课件
- 沧州出租从业资格证考试及答案解析
- 幼儿园年审申请书
- 广州建筑工程安全培训课件
- 2025至2030中国肥料原料行业发展研究与产业战略规划分析评估报告
- 四川省医疗服务价格项目汇编(2022版)
- 2025年辽宁卷历史高考试卷(原卷+答案)
评论
0/150
提交评论