当前位置:首页 » 操作系统 » 点阵绘圆算法

点阵绘圆算法

发布时间: 2024-06-26 18:05:16

A. 点阵图与矢量图的区别有哪些

1、 矢量图
矢量图又叫向量图,是用一系列计算机指令来描述和记录一幅图,一幅图可以解为一系列由点、线、面等到组成的子图,它所记录的是对象的几何形状、线条粗细和色彩等。生成的矢量图文件存储量很小,特别适用于文字设计、图案设计、版式设计、标志设计、计算机辅助设计(CAD)、工艺美术设计、插图等。
矢量图只能表示有规律的线条组成的图形,如工程图、三维造型或艺术字等;对于由无规律的像素点组成的图像(风景、人物、山水),难以用数学形式表达,不宜使用矢量图格式;其次矢量图不容易制作色彩丰富的图像,绘制的图像不很真实,并且在不同的软件之间交换数据也不太方便。
另外,矢量图像无法通过扫描获得,它们主要是依靠设计软件生成。矢量绘图程序定义(像数学计算)角度、圆弧、面积以及与纸张相对的空间方向,包含赋予填充和轮特征性的线框。常见的矢量图处理软件有CoreIDRAW、AutoCAD、Illustrator和FreeHand等。
2、位图
位图又叫点阵图或像素图,计算机屏幕上的图你是由屏幕上的发光点(即像素)构成的,每个点用二进制数据来描述其颜色与亮度等信息,这些点是离散的,类似于点阵。多个像素的色彩组合就形成了图像,称之为位图。
位图在放大到一定限度时会发现它是由一个个小方格组成的,这些小方格被称为像素点,一个像素是图像中最小的图像元素。在处理位图图像时,所编辑的是像素而不是对象或形状,它的大小和质量取决于图像中的像素点的多少,每平方英寸中所含像素越多,图像越清晰,颜色之间的混和也越平滑。计算机存储位图像实际上是存储图像的各个像素的位置和颜色数据等到信息,所以图像越清晰,像素越多,相应的存储容量也越大。
位图图像与矢量图像相比更容易模仿照片似的真实效果。位图图像的主要优点在于表现力强、细腻、层次多、细节多,可以十分容易的模拟出像照片一样的真实效果。由于是对图像中的像素进行编辑,所以在对图像进行拉伸、放大或缩小等到处理时,其清晰度和光滑度会受到影响。位图图像可以通过数字相机、扫描或PhotoCD获得,也可以通过其他设计软件生成
位图图像,也称点阵图像或绘制图像,是由称作像素的单个点组成的。当放大位图时,可以看见构成图像的单个图片元素。扩大位图尺寸就是增大单个像素,会使线条和形状显得参差不齐。但是如果从稍远一点

的位置观看,位图图像的颜色和形状又是连续的,这就是位图的特点。矢量图像,也称绘图图像,在数学上定义为一系列点与点之间的关系,矢量图可以任意放大或缩小而不会出现图像失真现象

B. 计算机图形学复习

第一章
1. 计算机图形:用数学方法描述,通过计算机生成、处理、存储和显示的对象。
2. 图形和图像的主要区别是表示方法不同:图形是用矢量表示;图像是用点阵表示的。图形和图像也可以通过光栅显示器(或经过识别处理)可相互转化。
3. 于计算机图形学紧密相关的学科主要包括 图像处理、计算几何和计算机视觉模式识别。它们的共同点是 以图形/图像在计算机中的表示方法为基础。
4. 交互式计算机图形系统的发展可概括为以下4个阶段:字符、矢量、二维光栅图形、三维图形。
5. 图形学研究的主要内容有:①几何造型技术 ②图形生成技术 ③图形处理技术 ④图形信息的存储、检索与交换技术 ⑤人机交互技术 ⑥动画技术 ⑦图形输入输出技术 ⑧图形标准与图形软件包的研发。
6. 计算机辅助设计和计算机辅助制造 是计算机图形学最广泛最活跃的应用领域。
7. 计算机图形学的基本任务:一是如何利用计算机硬件来实现图形处理功能;二是如何利用好的图形软件;三是如何利用数学方法及算法解决实际应用中的图行处理问题。
8. 计算机图形系统是由硬件系统和软件系统组成的。
9. 计算机图形系统包括处理、存储、交互、输入和输出五种基本功能。
10. 键盘和鼠标是最常用的图形输入设备。鼠标根据测量位移部件的不同,分为光电式、光机式和机械式3种。
11. 数字化仪分为电子式、超声波式、磁伸缩式、电磁感应式等。小型的数字化仪也称为图形输入板。
12. 触摸屏是一种 定位设备,它是一种对于触摸能产生反应的屏幕。
13. 扫描仪由3部分组成:扫描头、控制电路和移动扫描机构。扫描头由光源发射和光鲜接收组成。按移动机构的不同,扫描仪可分为平板式和滚筒式2种。
14. 显示器是计算机的标准输出设备。彩色CRT的显示技术有2种:电子穿透法和荫罩法。
15. 随机扫描是指电子束的定位及偏转具有随意性,电子束根据需要可以在荧光屏任意方向上连续扫描,没有固定扫描线和扫描顺序限制。它具有局部修改性和动态性能。
16. 光栅扫描显示器是画点设备。
17. 点距是指相邻像素点间的距离,与分辨指标相关。
18. 等离子显示器一般有三层玻璃板组成,通常称为等离子显示器的三层结构。
19. 用以输出图形的计算机外部设备称为硬拷贝设备。
20. 打印机是廉价的硬拷贝设备,从机械动作上常为撞击式和非撞击式2种。
21. 常用的喷墨头有:压电式、气泡式、静电式、固体式。
22. 绘图仪分为静电绘图仪和笔式绘图仪。
23. 图形软件的分层。由下到上分别是:①图形设备指令、命令集、计算机操作系统 ②零级图形软件 ③一级图形软件 ④二级图形软件 ⑤三级图形软件。
24. 零级图形软件是面向系统的、最底层的软件,主要解决图形设备与主机的通信与接口问题,又称设备驱动程序。
25. 一级图形软件即面向系统又面向用户,又称基本子系统。
26. 图形应用软件是系统的核心部分。
27. 从物理学角度,颜色以主波长、色纯度和辉度来描述;从视觉角度来看,颜色以色彩、饱和度和亮度来描述。
28. 用适当比列的3种颜色混合,可以获得白色,而且这3种颜色中的任意2种的组合都不能生成第三种颜色,称为三原色理论。
29. RGB模型的匹配表达式是:c=rR+gG+bB。
30. 常用颜色模型
颜色模型名称 使用范围
RGB 图形显示设备(彩色CRT和光栅显示器)
CMY 图形打印、绘制设备
HSV 对应画家本色原理、直观的颜色描述
HSL 基于颜色参数的模型
用基色青、品红、黄定义的CMY颜色模型用来描述硬拷贝设备的输出颜色。它从白光中滤去某种颜色,故称为减色性原色系统。

第二章
31. 直线生成的3个常用算法:数值微分法(DDA)、中点划线法和Bresenham算法。
32. DDA算法的C语言实现:
DDA算法生成直线,起点(x0,y0),终点(x1,y1).
Void CMy View ::OnDdaline()
{
CDC *pDC=GetDC(); //获得设备指针
int x0=100,y0=100,x1=300,y1=200,c=RGB(250,0,0);//定义直线两端点和直线颜色
int x,y,i;
float dx,dy,k;
dx=(float)(x1-x0);
dy=(float)(y1-y0);
k=dy/dx;
x=x0;
y=y0;
if(abs(k)<1)
{ for(;x<=x1;x++)
{pDC—>SetPixel(x,int(y+0.5),c);
y=y+k;}
}
if(abs(k)>=1)
{ for(;y<=y1;y++)
{pDC—>SetPixel(int(x+0.5),y,c);
x=x+1/k;}
}
ReleaseDC(pDC); //释放设备指针
}
33. 任何影响图元显示方法的参数称为属性参数。图元的基本表现是线段,其基本属性包括线型、线宽和色彩。
34. 最常见的线型包括实线、虚线、细线和点划线等,通常默认的线型是实线。
35. 线宽控制的实线方法:垂直线刷子、水平线刷子、方形线刷子。生成具有宽度的线条还可以采用区域填充算法。
36. 用离散量表示连续量时引起的失真现象称为走样。为了提高图形显示质量,减少或消除走样现象的技术称为反走样。
37. 反走样技术有:提高分辨率(硬件方法和软件方法)、简单区域取样、加权区域取样。
38. 区域连通情况分为四连通区域和八连通区域。四连通区域是指从区域上某一点出发,可通过上下左右4个方向移动,在不越出区域的前提下到达区域内的任意像素;八连通区域是指从区域内某一像素出发,可通过上下左右、左上左下、右上右下8个方向的移动,在不越出区域的前提下到达区域内的任意像素。
39. 字符的图形表示可以分为点阵式和矢量式两种形式。
40. 在图形软件中,除了要求能生成直线、圆等基本图形元素外,还要求能生成其他曲线图元、多边形及符号等多种图元。
41. 在扫描线填充算法中,对水平边忽略而不予处理的原因是实际处理时不计其交点。
42. 关于直线生成算法的叙述中,正确的是:Bresenham算法是对中点画线算法的改进。
43. 在中点画圆算法中叙述错误的是:为了减轻画圆的工作量,中点画圆利用了圆的四对称性性质。
44. 多边形填充时,下列论述错误的是:在判断点是否在多边形内时,一般通过在多变形外找一点,然后根据该线段与多边形的交点数目为偶数即可认为在多边形内部,若为奇数则在多边形外部,且不考虑任何特殊情况。
第三章
1. Cohen-Sutherland算法,也称编码裁剪法。其基本思想是:对于每条待裁剪的线段P1P2分三种情况处理:①若P1P2完全在窗口内,则显示该线段,简称“取”之;②若P1P2完全在窗口外,则丢弃该线段,简称“舍”之;③若线段既不满足“取”的条件也不满足“舍”的条件,则求线段与窗口边界的交点,在交点处把线段分为两段,其中一段 完全在窗口外,可舍弃之,然后对另一段重复上述处理。
2. Sutherland-Hodgman算法,又称逐边裁剪算法。其基本思想是用窗口的四条边所在的直线依次来裁剪多边形。多边形的每条边与裁剪线的位置关系有4种情况(假设当前处理的多边形的边为SP):a>端点S在外侧,P在内侧,则从外到内输出P和I;b>端点S和P都在内侧,则从内到内输出P;c>端点S在内侧,而P在外侧,则从内到外输出I;d>端点S和P都在外侧,无输出。
3. 按裁剪精度的不同,字符裁剪可分为三种情况:字符串裁剪、字符裁剪和笔画裁剪。
4. 在线段AB的编码裁剪算法中,如A、B两点的码逻辑或运算全为0,则该线段位于窗口内;如AB两点的码逻辑与运算结果不为0,则该线段在窗口外。
5. n边多边形关于矩形窗口进行裁剪,结果多边形最多有2n个顶点,最少有n个顶点。
6. 对一条等长的直线段裁剪,编码裁剪算法的速度和中点分割算法的裁剪速度哪一个快,无法确定。(√)
7. 多边形裁剪可以看做是线段裁剪的组合。(X)
8. 对于线段来说,中点分割算法要比其他线段裁剪算法的裁剪速度快。(X)
9. 多边形的Weiler-Atherton裁剪算法可以实现对任意多边形的裁剪。(√)
第四章
1. 几何变换是指改变几何形状和位置,非几何变换是指改变图形的颜色、线型等属性。变换方法有对象变换(坐标系不动)和坐标变换(坐标系变化)两种。
2. 坐标系可以分为以下几种:世界坐标系(是对计算机图形场景中所有图形对象的空间定位和定义,是其他坐标系的参照)、模型坐标系(用于设计物体的局部坐标系)、用户坐标系(为了方便交互绘图操作,可以变换角度、方向)、设备坐标系(是绘制或输出图形的设备所用的坐标系,采用左手系统)。
3. 将用户坐标系中需要进行观察和处理的一个坐标区域称为窗口,将窗口映射到显示设备上的坐标区域称为视区。从窗口到视区的变换,称为规格化变换。(eg.4-1)
4. 所谓体素,是指可以用有限个尺寸参数定位和定形的体,如长方体、圆锥体。
5. 所谓齐次坐标表示,就是用n+1维向量表示n维的向量。
6. 二维点(x,y)的齐次坐标可以表示为:(hx hy h),其中h≠0。当h=1时称为规范化的齐次坐标,它能保证点集表示的唯一性。
7. 旋转变换公式的推导、对称变换

第五章
1. 交互绘图技术是一种处理用户输入图形数据的技术,是设计交互绘图系统的基础。常见的交互绘图技术有:定位技术、橡皮筋技术、拖曳技术、定值技术、拾取技术、网格与吸附技术。
2. 常用的橡皮筋技术有:橡皮筋直线、橡皮筋矩形、橡皮筋圆。
3. 拖曳技术是将形体在空间移动的过程动态地、连续地表示出来,直到用户满意。
4. 定值技术有2种:一种是键入数值,另一种是改变电位计阻值产生要求的数量,可以用模拟的方式实现电位计功能。
5. 拾取一个基本的对象可以通过:指定名称法、特征点发、外界矩阵法、分类法、直接法。

第六章
1. 点、线、面是形成三维图形的基础,三维变换是从点开始。
2. 三维图形变换分类:三维图形变换包括三维几何变换和平面几何变换,三维几何变换包括基本几何变换和复合变换;平面几何变换包括平行投影和透视投影,平行投影包括正投影和轴测投影,透视投影包括一点透视、二点透视、三点透视。
3. 投影中心与投影面之间的距离是无限的投影叫做平行投影,它包括正投影和轴测投影。
4. 正投影形成的视图包括:主视图、俯视图和左视图。轴测投影形成的视图为轴测图。
5. 透视投影也称为中心投影,其投影中心与投影面之间的距离是有限的。其特点是产生近大远小的视觉效果
6. 对于透视投影,不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点。透视投影的灭点有无限多个,与坐标轴平行的平行线在投影面上形成的灭点称为主灭点。主灭点最多有3个,其对应的透视投影分别称为一点透视、二点透视、三点透视。

第七章
1. 型值点是曲面或曲线上的点,而控制点不一定在曲线曲面上,控制点的主要目的是用来控制曲线曲面的形状。
2. 插值和逼近是曲线曲面设计中的两种不同方法。插值—生成的曲线曲面经过每一个型值点,逼近—生成的曲线曲面靠近每一个控制点。
3. 曲线曲面的表示要求:唯一性、统一性、几何不变性、几何直观、易于界定、易于光滑连接。
4. 曲线曲面有参数和非参数表示,但参数表示较好。非参数表示又分为显式和隐式两种。
5. 对于一个平面曲线,显式表示的一般形式是:y=f(x)。一个x与一个y对应,因此显式方程不能表示封闭或多值曲线。例不能用显式方程表示一个圆。
6. 如果一个曲线方程表示为f(x,y)=0的形式,我们称之为隐式表示。其优点是易于判断函数f(x,y)是否大于、小于或等于零,即易于判断是落在所表示曲线上还是在曲线的哪一侧。
7. 参数连续与几何连续的区别:参数连续性是传统意义上的、严格的连续,而几何连续性只需限定两个曲线段在交点处的参数导数成比例,不必完全相等,是一种更直观、易于交互控制的连续性。
8. 在曲线曲面造型中,一般只用到C1(1阶参数连续)、C2(2阶参数连续)、G1(1阶几何连续)、G2(2阶几何连续)。切矢量(一阶导数)反映了曲线对参数t的变化速递,曲率(二阶导数)反映了曲线对参数t变化的加速度。
9. 通常C1连续必能保证G1的连续,但G1的连续并不能保证C1连续。
10. 对于三次Hermite曲线,用于描述曲线的可供选择的条件有:端点坐标、切矢量和曲率。
11. 三次Hermite曲线特点:①可局部调整,因为每个曲线段仅依赖于端点约束;②基于Hermite样条的变化形式有Cardinal样条和Kochanek-Bartels样条;③具有几何不变性。
12. Bezier曲线的性质:①端点性质②端点切矢量③端点的曲率④对称性⑤几何不变性⑥凸包性⑦变差缩减性。
13. 一次Bezier曲线是连接起点P0和终点P1的直线段,二次Bezier曲线对应一条起点P0终点在P2处的抛物线。
14. B样条曲线的性质:①局部性②连续性或可微性③几何不变性④严格凸包性⑤近似性⑥变差缩减性。
15. NURRS曲线具有以下性质:①局部性②可微性③仿射不变性④严格保凸性⑤一般性⑥变差缩减性⑦端点性质。

第八章
1. 要把三维物体的信息显示在二维显示设备中,必须通过投影变换。由于投影变换失去了深度信息,往往会导致二义性,要消除二义性,就必须在绘制时消除实际不可见的线和面,称作消除隐藏线和隐藏面,简称消隐。
2. 面消隐常用算法有:深度缓冲区(Z-buffer)算法和深度排序算法(画家算法)。
3. 深度缓冲区算法和深度排序算法的区别:

C. 链夊摢浣嶈佸ぇ鑳藉憡璇夋垜 璁$畻链哄浘褰㈠︿腑鍏充簬鍦嗕笌妞鍦嗙殑鐢熸垚绠楁硶镄勬簮绋嫔簭

c璇瑷锲惧舰鍑芥暟

Turbo C鎻愪緵浜嗛潪甯镐赴瀵岀殑锲惧舰鍑芥暟, 镓链夊浘褰㈠嚱鏁扮殑铡熷瀷鍧囧湪graphics. h涓, 链鑺备富瑕佷粙缁嶅浘褰㈡ā寮忕殑鍒濆嫔寲銆佺嫭绔嫔浘褰㈢▼搴忕殑寤虹珛銆佸熀链锲惧舰锷熻兘銆佸浘褰㈢獥鍙d互鍙婂浘褰㈡ā寮忎笅镄勬枃链杈揿嚭绛夊嚱鏁般傚彟澶, 浣跨敤锲惧舰鍑芥暟镞惰佺‘淇濇湁鏄剧ず鍣ㄥ浘褰㈤┍锷ㄧ▼搴*BGI, 钖屾椂灏嗛泦鎴愬紑鍙戠幆澧僌ptions/Linker涓镄凣raphics lib阃変负on, 鍙链夎繖镙锋墠鑳戒缭璇佹g‘浣跨敤锲惧舰鍑芥暟銆

1. 锲惧舰妯″纺镄勫埯濮嫔寲
涓嶅悓镄勬樉绀哄櫒阃傞厤鍣ㄦ湁涓嶅悓镄勫浘褰㈠垎杈ㄧ巼銆傚嵆鏄钖屼竴鏄剧ず鍣ㄩ傞厤鍣, 鍦ㄤ笉钖屾ā寮忎笅涔熸湁涓嶅悓鍒呜鲸鐜囥傚洜姝, 鍦ㄥ睆骞曚綔锲句箣鍓, 蹇呴’镙规嵁鏄剧ず鍣ㄩ傞厤鍣ㄧ岖被灏嗘樉绀哄櫒璁剧疆鎴愪负镆愮嶅浘褰㈡ā寮, 鍦ㄦ湭璁剧疆锲惧舰妯″纺涔嫔墠, 寰链虹郴缁熼粯璁ゅ睆骞曚负鏂囨湰妯″纺(80鍒, 25琛屽瓧绗︽ā寮), 姝ゆ椂镓链夊浘褰㈠嚱鏁板潎涓嶈兘宸ヤ綔銆傝剧疆灞忓箷涓哄浘褰㈡ā寮, 鍙鐢ㄤ笅鍒楀浘褰㈠埯濮嫔寲鍑芥暟:

void far initgraph(int far *gdriver, int far *gmode, char *path);

鍏朵腑gdriver鍜実mode鍒嗗埆琛ㄧず锲惧舰椹卞姩鍣ㄥ拰妯″纺, path鏄鎸囧浘褰㈤┍锷ㄧ▼搴忔墍鍦ㄧ殑鐩褰曡矾寰勚傛湁鍏冲浘褰㈤┍锷ㄥ櫒銆佸浘褰㈡ā寮忕殑绗﹀彿甯告暟鍙婂瑰簲镄勫垎杈ㄧ巼瑙佽〃2銆

锲惧舰椹卞姩绋嫔簭鐢盩urbo C鍑虹増鍟嗘彁渚, 鏂囦欢镓╁𪾢钖崭负.BGI銆傛牴鎹涓嶅悓镄勫浘褰㈤傞厤鍣ㄦ湁涓嶅悓镄勫浘褰㈤┍锷ㄧ▼搴忋备緥濡傚逛簬EGA銆 VGA 锲惧舰阃傞厤鍣ㄥ氨璋幂敤椹卞姩绋嫔簭EGAVGA.BGI銆

琛2. 锲惧舰椹卞姩鍣ㄣ佹ā寮忕殑绗﹀彿甯告暟鍙婃暟鍊
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
锲惧舰椹卞姩鍣(gdriver) 锲惧舰妯″纺(gmode)
钬斺斺斺斺斺斺斺斺斺斺 钬斺斺斺斺斺斺斺斺斺斺 镩茶皟 鍒呜鲸鐜
绗﹀彿甯告暟 鏁板 绗﹀彿甯告暟 鏁板
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
CGA 1 CGAC0 0 C0
320*200
CGAC1 1 C1
320*200
CGAC2 2 C2
320*200
CGAC3 3 C3
320*200
CGAHI 4 2镩
640*200
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
MCGA 2 MCGAC0 0 C0
320*200
MCGAC1 1 C1
320*200
MCGAC2 2 C2
320*200
MCGAC3 3 C3
320*200
MCGAMED 4 2镩
640*200
MCGAHI 5 2镩
640*480
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
EGA 3 EGALO 0 16镩
640*200
EGAHI 1 16镩
640*350
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
EGA644 EGA64LO 0 16镩
640*200
EGA64HI 1 4镩
640*350
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
EGAMON 5 EGAMONHI0 2镩
640*350
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
IBM8514 6 IBM8514LO 0256镩
640*480
IBM8514HI 1256镩
1024*768
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
HERC 7 HERCMONOHI 0 2镩
720*348
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
ATT400 8 ATT400C00 C0
320*200
ATT400C11 C1
320*200
ATT400C22 C2
320*200
ATT400C33 C3
320*200
ATT400MED 4 2镩
320*200
ATT400HI5 2镩
320*200
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
VGA 9 VGALO 0 16镩
640*200
VGAMED 1 16镩
640*350
VGAHI 2 16镩
640*480
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
PC3270 10 PC3270HI0 2镩
720*350
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
DETECT 0 鐢ㄤ簬纭浠舵祴璇
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂瑷

--------------------------------------------------------------------------------

2 锲惧舰鍑芥暟

渚4. 浣跨敤锲惧舰鍒濆嫔寲鍑芥暟璁剧疆VGA楂桦垎杈ㄧ巼锲惧舰妯″纺
#include
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(100, 100, 300, 250, 50, 1); /*鐢讳竴闀挎柟浣*/
getch();
closegraph();
return 0;
}

链夋椂缂栫▼钥呭苟涓岖煡阆撴墍鐢ㄧ殑锲惧舰鏄剧ず鍣ㄩ傞厤鍣ㄧ岖被, 鎴栬呴渶瑕佸皢缂栧啓镄勭▼搴忕敤浜庝笉钖屽浘褰㈤┍锷ㄥ櫒, Turbo C鎻愪緵浜嗕竴涓镊锷ㄦ娴嬫樉绀哄櫒纭浠剁殑鍑芥暟, 鍏惰皟鐢ㄦ牸寮忎负:
void far detectgraph(int *gdriver, *gmode);
鍏朵腑gdriver鍜実mode镄勬剰涔変笌涓婇溃鐩稿悓銆

渚5. 镊锷ㄨ繘琛岀‖浠舵祴璇曞悗杩涜屽浘褰㈠埯濮嫔寲
#include
int main()
{
int gdriver, gmode;
detectgraph(&gdriver, &gmode); /*镊锷ㄦ祴璇旷‖浠*/
printf("the graphics driver is %d, mode is %d\n", gdriver, gmode); /*杈揿嚭娴嬭瘯缁撴灉*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc");
/* 镙规嵁娴嬭瘯缁撴灉鍒濆嫔寲锲惧舰*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}

涓娄緥绋嫔簭涓鍏埚瑰浘褰㈡樉绀哄櫒镊锷ㄦ娴, 铹跺悗鍐岖敤锲惧舰鍒濆嫔寲鍑芥暟杩涜屽埯濮嫔寲璁剧疆, 浣员urbo C鎻愪緵浜嗕竴绉嶆洿绠鍗旷殑鏂规硶, 鍗崇敤gdriver= DETECT 璇鍙ュ悗鍐嶈窡initgraph()鍑芥暟灏辫屼简銆傞噰鐢ㄨ繖绉嶆柟娉曞悗, 涓娄緥鍙鏀逛负:

渚6.
#include
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(50, 50, 150, 30, 1);
getch();
closegraph();
return 0;
}

鍙﹀, Turbo C鎻愪緵浜嗛鍑哄浘褰㈢姸镐佺殑鍑芥暟closegraph(), 鍏惰皟鐢ㄦ牸寮忎负:

void far closegraph(void);

璋幂敤璇ュ嚱鏁板悗鍙阃鍑哄浘褰㈢姸镐佽岃繘鍏ユ枃链鏂瑰纺(Turbo C 榛樿ゆ柟寮), 骞堕喷鏀剧敤浜庝缭瀛桦浘褰㈤┍锷ㄧ▼搴忓拰瀛椾綋镄勭郴缁熷唴瀛樸

2. 镫绔嫔浘褰㈣繍琛岀▼搴忕殑寤虹珛
Turbo C瀵逛簬鐢╥nitgraph()鍑芥暟鐩存帴杩涜岀殑锲惧舰鍒濆嫔寲绋嫔簭, 鍦ㄧ紪璇戝拰阈炬帴镞跺苟娌℃湁灏嗙浉搴旂殑椹卞姩绋嫔簭(*.BGI)瑁呭叆鍒版墽琛岀▼搴, 褰撶▼搴忚繘琛屽埌intitgraph()璇鍙ユ椂, 鍐崭粠璇ュ嚱鏁颁腑绗涓変釜褰㈠纺鍙傛暟char *path涓镓瑙勫畾镄勮矾寰勪腑铡绘垒鐩稿簲镄勯┍锷ㄧ▼搴忋傝嫢娌℃湁椹卞姩绋嫔簭, 鍒椤湪C:\TC涓铡绘垒, 濡侰:\TC涓浠嶆病链夋垨TC涓嶅瓨鍦,灏嗕细鍑虹幇阌栾:

BGI Error: Graphics not initialized (use 'initgraph')

锲犳, 涓轰简浣跨敤鏂逛究, 搴旇ュ缓绔嬩竴涓涓嶉渶瑕侀┍锷ㄧ▼搴忓氨鑳界嫭绔嬭繍琛岀殑鍙镓ц屽浘褰㈢▼搴,Turbo C涓瑙勫畾鐢ㄤ笅杩版ラ(杩欓噷浠EGA銆乂GA鏄剧ず鍣ㄤ负渚):

1. 鍦–:\TC瀛愮洰褰曚笅杈揿叆锻戒护:BGIOBJ EGAVGA
姝ゅ懡浠ゅ皢椹卞姩绋嫔簭EGAVGA.BGI杞鎹㈡垚EGAVGA.OBJ镄勭洰镙囨枃浠躲

2. 鍦–:\TC瀛愮洰褰曚笅杈揿叆锻戒护:TLIB LIB\GRAPHICS.LIB+EGAVGA
姝ゅ懡浠ょ殑镒忔濇槸灏咵GAVGA.OBJ镄勭洰镙囨ā鍧楄呭埌GRAPHICS.LIB搴撴枃浠朵腑銆

3. 鍦ㄧ▼搴忎腑initgraph()鍑芥暟璋幂敤涔嫔墠锷犱笂涓鍙:
registerbgidriver(EGAVGA_driver):

璇ュ嚱鏁板憡璇夎繛鎺ョ▼搴忓湪杩炴帴镞舵妸EGAVGA镄勯┍锷ㄧ▼搴忚呭叆鍒扮敤鎴风殑镓ц岀▼搴忎腑銆
缁忚繃涓婇溃澶勭悊,缂栬疟阈炬帴钖庣殑镓ц岀▼搴忓彲鍦ㄤ换浣旷洰褰曟垨鍏跺畠鍏煎规満涓婅繍琛屻
锅囱惧凡浣滀简鍓崭袱涓姝ラ,鑻ュ啀钖戜緥6涓锷 registerbgidriver()鍑芥暟鍒椤彉鎴:
渚7:
#include
#include
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver): / *寤虹珛镫绔嫔浘褰㈣繍琛岀▼搴 */
initgraph( gdriver, gmode,"c:\\tc");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
涓娄緥缂栬疟阈炬帴钖庝骇鐢熺殑镓ц岀▼搴忓彲镫绔嬭繍琛屻
濡备笉鍒濆嫔寲鎴怑GA鎴朇GA鍒呜鲸鐜, 钥屾兂鍒濆嫔寲涓篊GA鍒呜鲸鐜, 鍒椤彧闇瑕佸皢涓婅堪姝ラや腑链塃GAVGA镄勫湴鏂圭敤CGA浠f浛鍗冲彲銆

3.灞忓箷棰滆壊镄勮剧疆鍜屾竻灞忓嚱鏁
瀵逛簬锲惧舰妯″纺镄勫睆骞曢滆壊璁剧疆, 钖屾牱鍒嗕负鑳屾櫙镩茬殑璁剧疆鍜屽墠鏅镩茬殑璁剧疆銆傚湪Turbo C涓鍒嗗埆鐢ㄤ笅闱涓や釜鍑芥暟銆

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂瑷

--------------------------------------------------------------------------------

3 锲惧舰鍑芥暟

璁剧疆鑳屾櫙镩:void far setbkcolor( int color);
璁剧疆浣滃浘镩:void far setcolor(int color);

鍏朵腑color 涓哄浘褰㈡柟寮忎笅棰滆壊镄勮勫畾鏁板, 瀵笶GA, VGA鏄剧ず鍣ㄩ傞厤鍣, 链夊叧棰滆壊镄勭﹀彿甯告暟鍙婃暟鍊艰佷笅琛ㄦ墍绀恒
琛3 链夊叧灞忓箷棰滆壊镄勭﹀彿甯告暟琛
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
绗﹀彿甯告暟 鏁板 钖涔 绗﹀彿甯告暟 鏁板 钖涔
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
BLACK 0 榛戣壊 DARKGRAY 8 娣辩伆
BLUE 1 鍏拌壊 LIGHTBLUE 9 娣卞叞
GREEN 2 缁胯壊 LIGHTGREEN 10 娣$豢
CYAN 3 闱掕壊 LIGHTCYAN 11 娣¢潚
RED 4 绾㈣壊 LIGHTRED 12 娣$孩
MAGENTA5 娲嬬孩 LIGHTMAGENTA 13 娣℃磱绾
BROWN 6 妫曡壊 YELLOW 14 榛勮壊
LIGHTGRAY 7 娣$伆 WHITE 15 锏借壊
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
瀵逛簬CGA阃傞厤鍣, 鑳屾櫙镩插彲浠ヤ负琛3涓16绉嶉滆壊镄勪竴绉, 浣嗗墠鏅镩蹭緷璧栦簬涓嶅悓镄勮皟镩叉澘銆傚叡链夊洓绉嶈皟镩叉澘, 姣忕嶈皟镩叉澘涓婃湁锲涚嶉滆壊鍙渚涢夋嫨銆备笉钖岃皟镩叉澘镓瀵瑰簲镄勫师镩茶佽〃4銆

琛4 CGA璋冭壊𨱒夸笌棰滆壊鍊艰〃
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
璋冭壊𨱒 棰滆壊鍊
钬斺斺斺斺斺斺斺斺斺斺 钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
绗﹀彿甯告暟 鏁板 0 1 2 3
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
C0 0 鑳屾櫙 缁跨孩榛
C1 1 鑳屾櫙 闱 娲嬬孩 锏
C2 2 鑳屾櫙 娣$豢 娣$孩 榛
C3 3 鑳屾櫙 娣¢潚 娣℃磱绾 锏
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍

娓呴櫎锲惧舰灞忓箷鍐呭逛娇鐢ㄦ竻灞忓嚱鏁, 鍏惰皟鐢ㄦ牸寮忓备笅:
voide far cleardevice(void);
链夊叧棰滆壊璁剧疆銆佹竻灞忓嚱鏁扮殑浣跨敤璇风湅渚8銆
渚8:
#include
#include
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
registerbgidriver(EGAVGA_DRIVER);/*寤虹珛镫绔嫔浘褰㈣繍琛岀▼搴*/
initgraph(&gdriver, &gmode", "");/*锲惧舰鍒濆嫔寲*/
setbkcolor(0); /*璁剧疆锲惧舰鑳屾櫙*/
cleardevice();
for(i=0; i<=15; i++)
{
setcolor(i); /*璁剧疆涓嶅悓浣滃浘镩*/
circle(320, 240, 20+i*10); /*鐢诲崐寰勪笉钖岀殑鍦*/
delay(100); /*寤惰繜100姣绉*/
}
for(i=0; i<=15; i++)
{
setbkcolor(i); /*璁剧疆涓嶅悓鑳屾櫙镩*/
cleardevice();
circle(320, 240, 20+i*10);
delay(100);
}
closegraph();
return 0;
}

鍙﹀, TURBO C涔熸彁渚涗简鍑犱釜銮峰缑鐜拌岄滆壊璁剧疆𨱍呭喌镄勫嚱鏁般
int far getbkcolor(void); 杩斿洖鐜拌岃儗鏅棰滆壊鍊笺
int far getcolor(void);杩斿洖鐜拌屼綔锲鹃滆壊鍊笺
int far getmaxcolor(void); 杩斿洖链楂桦彲鐢ㄧ殑棰滆壊鍊笺

4. 锘烘湰锲惧舰鍑芥暟

锘烘湰锲惧舰鍑芥暟鍖呮嫭鐢荤偣, 绾夸互鍙婂叾瀹冧竴浜涘熀链锲惧舰镄勫嚱鏁般傛湰鑺傚硅繖浜涘嚱鏁颁綔涓鍏ㄩ溃镄勪粙缁嶃

涓銆佺敾镣
1. 鐢荤偣鍑芥暟
void far putpixel(int x, int y, int color);
璇ュ嚱鏁拌〃绀烘湁鎸囧畾镄勮薄鍏幂敾涓涓鎸塩olor镓纭瀹氶滆壊镄勭偣銆傚逛簬棰滆壊color镄勫煎彲浠庤〃3涓銮峰缑钥屽箈, y鏄鎸囧浘褰㈣薄鍏幂殑鍧愭爣銆

鍦ㄥ浘褰㈡ā寮忎笅, 鏄鎸夎薄鍏冩潵瀹氢箟鍧愭爣镄勚傚筕GA阃傞厤鍣, 瀹幂殑链楂桦垎杈ㄧ巼涓640x480, 鍏朵腑640涓烘暣涓灞忓箷浠庡乏鍒板彸镓链夎薄鍏幂殑涓鏁, 480 涓烘暣涓灞忓箷浠庝笂鍒颁笅镓链夎薄鍏幂殑涓鏁般傚睆骞旷殑宸︿笂瑙掑潗镙囦负(0, 0), 鍙充笅瑙掑潗镙囦负(639, 479), 姘村钩鏂瑰悜浠庡乏鍒板彸涓簒杞存e悜, 鍨傜洿鏂瑰悜浠庝笂鍒颁笅涓簓杞存e悜銆俆URBO C 镄勫浘褰㈠嚱鏁伴兘鏄鐩稿逛簬锲惧舰灞忓箷鍧愭爣, 鍗宠薄鍏冩潵璇寸殑銆

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂瑷

--------------------------------------------------------------------------------

4 锲惧舰鍑芥暟

鍏充簬镣圭殑鍙﹀栦竴涓鍑芥暟鏄:
int far getpixel(int x, int y);
瀹冭幏寰楀綋鍓岖偣(x, y)镄勯滆壊鍊笺

2. 链夊叧鍧愭爣浣岖疆镄勫嚱鏁

int far getmaxx(void);
杩斿洖x杞寸殑链澶у笺

int far getmaxy(void);
杩斿洖y杞寸殑链澶у笺

int far getx(void);
杩斿洖娓告爣鍦▁杞寸殑浣岖疆銆

void far gety(void);
杩斿洖娓告爣链墆杞寸殑浣岖疆銆

void far moveto(int x, int y);
绉诲姩娓告爣鍒(x, y)镣, 涓嶆槸鐢荤偣, 鍦ㄧЩ锷ㄨ繃绋嬩腑浜︾敾镣广

void far moverel(int dx, int dy);
绉诲姩娓告爣浠庣幇琛屼綅缃(x, y)绉诲姩鍒(x+dx, y+dy)镄勪綅缃, 绉诲姩杩囩▼涓涓岖敾镣广

浜屻佺敾绾
1. 鐢荤嚎鍑芥暟
TURBO C鎻愪緵浜嗕竴绯诲垪鐢荤嚎鍑芥暟, 涓嬮溃鍒嗗埆鍙栾堪:

void far line(int x0, int y0, int x1, int y1);
鐢讳竴𨱒′粠镣(x0, y0)鍒(x1, y1)镄勭洿绾裤

void far lineto(int x, int y);
鐢讳竴浣滀粠鐜拌屾父镙囧埌镣(x, y)镄勭洿绾裤

void far linerel(int dx, int dy);
鐢讳竴𨱒′粠鐜拌屾父镙(x, y)鍒版寜鐩稿瑰为噺纭瀹氱殑镣(x+dx, y+dy)镄勭洿绾裤

void far circle(int x, int y, int radius);
浠(x, y)涓哄浑蹇, radius涓哄崐寰, 鐢讳竴涓鍦嗐

void far arc(int x, int y, int stangle, int endangle, int radius);
浠(x, y)涓哄浑蹇, radius涓哄崐寰, 浠巗tangle寮濮嫔埌endangle缁撴潫(鐢ㄥ害琛ㄧず)鐢讳竴娈靛浑寮х嚎銆傚湪TURBO C涓瑙勫畾x杞存e悜涓0搴, 阃嗘椂阍堟柟钖戞棆杞涓锻, 渚濇′负90, 180, 270鍜360搴(鍏跺畠链夊叧鍑芥暟涔熸寜姝よ勫畾, 涓嶅啀閲嶈堪)銆

void ellipse(int x, int y, int stangle, int endangle, int xradius,int yradius);
浠(x, y)涓轰腑蹇, xradius, yradius涓簒杞村拰y杞村崐寰, 浠庤抯tangle 寮濮嫔埌endangle缁撴潫鐢讳竴娈垫き鍦嗙嚎, 褰搒tangle=0, endangle=360镞, 鐢诲嚭涓涓瀹屾暣镄勬き鍦嗐

void far rectangle(int x1, int y1, int x2, inty2);
浠(x1, y1)涓哄乏涓婅, (x2, y2)涓哄彸涓嬭掔敾涓涓鐭╁舰妗嗐

void far drawpoly(int numpoints, int far *polypoints);
鐢讳竴涓椤剁偣鏁颁负numpoints, 钖勯《镣瑰潗镙囩敱polypoints 缁椤嚭镄勫氲竟褰銆俻olypoints鏁村瀷鏁扮粍蹇呴’镊冲皯链2鍊嶉《镣规暟涓镞犵礌銆傛疮涓涓椤剁偣镄勫潗镙囬兘瀹氢箟涓簒,y, 骞朵笖x鍦ㄥ墠銆傚煎缑娉ㄦ剰镄勬槸褰撶敾涓涓灏侀棴镄勫氲竟褰㈡椂, numpoints 镄勫煎彇瀹为檯澶氲竟褰㈢殑椤剁偣鏁板姞涓, 骞朵笖鏁扮粍polypoints涓绗涓涓鍜屾渶钖庝竴涓镣圭殑鍧愭爣鐩稿悓銆

涓嬮溃涓句竴涓鐢╠rawpoly()鍑芥暟鐢荤澶寸殑渚嫔瓙銆
渚9:
#include
#include
int main()
{
int gdriver, gmode, i;
int arw[16]={200, 102, 300, 102, 300, 107, 330,
100, 300, 93, 300, 98, 200, 98, 200,
102};
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(12); /*璁剧疆浣滃浘棰滆壊*/
drawpoly(8, arw); /*鐢讳竴绠澶*/
getch();
closegraph();
return 0;
}

2. 璁惧畾绾垮瀷鍑芥暟
鍦ㄦ病链夊圭嚎镄勭壒镐ц繘琛岃惧畾涔嫔墠, TURBO C鐢ㄥ叾榛樿ゅ, 鍗充竴镣瑰界殑瀹炵嚎,浣员URBO C涔熸彁渚涗简鍙浠ユ敼鍙樼嚎鍨嬬殑鍑芥暟銆傜嚎鍨嫔寘𨰾:瀹藉害鍜屽舰鐘躲傚叾涓瀹藉害鍙链変袱绉嶉夋嫨: 涓镣瑰藉拰涓夌偣瀹姐傝岀嚎镄勫舰鐘跺垯链変簲绉嶃备笅闱浠嬬粛链夊叧绾垮瀷镄勮剧疆鍑芥暟銆

void far setlinestyle(int linestyle, unsigned upattern, int thickness);
璇ュ嚱鏁扮敤𨱒ヨ剧疆绾跨殑链夊叧淇℃伅, 鍏朵腑linestyle鏄绾垮舰鐘剁殑瑙勫畾, 瑙佽〃5銆

琛5. 链夊叧绾跨殑褰㈢姸(linestyle)
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
绗﹀彿甯告暟 鏁板 钖涔
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
SOLID_LINE 0 瀹炵嚎
DOTTED_LINE 1 镣圭嚎
CENTER_LINE 2 涓蹇幂嚎
DASHED_LINE 3 镣圭敾绾
USERBIT_LINE 4 鐢ㄦ埛瀹氢箟绾
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂瑷

--------------------------------------------------------------------------------

5 锲惧舰鍑芥暟
thickness鏄绾跨殑瀹藉害, 瑙佽〃6銆

琛6. 链夊叧绾垮(thickness)
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
绗﹀彿甯告暟 鏁板 钖涔
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
NORM_WIDTH 1 涓镣瑰
THIC_WIDTH 3 涓夌偣瀹
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
瀵逛簬upattern, 鍙链塴inestyle阃塙SERBIT_LINE 镞舵墠链夋剰涔( 阃夊叾瀹幂嚎鍨,uppattern鍙0鍗冲彲)銆傛よ繘uppattern镄16浣崭簩杩涘埗鏁扮殑姣忎竴浣崭唬琛ㄤ竴涓璞″厓, 濡傛灉闾d綅涓1, 鍒栾ヨ薄鍏冩墦寮, 钖﹀垯璇ヨ薄鍏冨叧闂銆

void far getlinesettings(struct linesettingstype far *lineinfo);
璇ュ嚱鏁板皢链夊叧绾跨殑淇℃伅瀛樻斁鍒扮敱lineinfo 鎸囧悜镄勭粨鏋勪腑, 琛ㄤ腑
linesettingstype镄勭粨鏋勫备笅:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}
渚嫔备笅闱涓ゅ彞绋嫔簭鍙浠ヨ诲嚭褰揿墠绾跨殑鐗规
struct linesettingstype *info;
getlinesettings(info);

void far setwritemode(int mode);
璇ュ嚱鏁拌勫畾鐢荤嚎镄勬柟寮忋傚傛灉mode=0, 鍒栾〃绀虹敾绾挎椂灏嗘墍鐢讳綅缃镄勫师𨱒ヤ俊鎭瑕嗙洊浜(杩欐槸TURBO C镄勯粯璁ゆ柟寮)銆傚傛灉mode=1, 鍒栾〃绀虹敾绾挎椂鐢ㄧ幇鍦ㄧ壒镐х殑绾夸笌镓鐢讳箣澶勫师链夌殑绾胯繘琛屽纾鎴(XOR)镎崭綔, 瀹为檯涓婄敾鍑虹殑绾挎槸铡熸湁绾夸笌鐜板湪瑙勫畾镄勭嚎杩涜屽纾鎴栧悗镄勭粨鏋溿傚洜姝, 褰撶嚎镄勭壒镐т笉鍙, 杩涜屼袱娆$敾绾挎搷浣灭浉褰扑簬娌℃湁鐢荤嚎銆

链夊叧绾垮瀷璁惧畾鍜岀敾绾垮嚱鏁扮殑渚嫔瓙濡备笅镓绀恒
渚10.
#include
#include
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(GREEN);
circle(320, 240, 98);
setlinestyle(0, 0, 3); /*璁剧疆涓夌偣瀹藉疄绾*/
setcolor(2);
rectangle(220, 140, 420, 340);
setcolor(WHITE);
setlinestyle(4, 0xaaaa, 1); /*璁剧疆涓镣瑰界敤鎴峰畾涔夌嚎*/
line(220, 240, 420, 240);
line(320, 140, 320, 340);
getch();
closegraph();
return 0;
}

5. 灏侀棴锲惧舰镄勫~鍏
濉鍏呭氨鏄鐢ㄨ勫畾镄勯滆壊鍜屽浘妯″~婊′竴涓灏侀棴锲惧舰銆

涓銆佸厛鐢昏疆寤揿啀濉鍏

TURBO C鎻愪緵浜嗕竴浜涘厛鐢诲嚭锘烘湰锲惧舰杞寤, 鍐嶆寜瑙勫畾锲炬ā鍜岄滆壊濉鍏呮暣涓灏侀棴锲惧舰镄勫嚱鏁般傚湪娌℃湁鏀瑰彉濉鍏呮柟寮忔椂, TURBO C浠ラ粯璁ゆ柟寮忓~鍏呫 涓嬮溃浠嬬粛杩欎簺鍑芥暟銆

void far bar(int x1, int y1, int x2, int y2);
纭瀹氢竴涓浠(x1, y1)涓哄乏涓婅, (x2, y2)涓哄彸涓嬭掔殑鐭╁舰绐楀彛, 鍐嶆寜瑙勫畾锲炬ā鍜岄滆壊濉鍏呫
璇存槑: 姝ゅ嚱鏁颁笉鐢诲嚭杈规, 镓浠ュ~鍏呰壊涓鸿竟妗嗐

void far bar3d(int x1, int y1, int x2, int y2, int depth, int topflag);
褰搕opflag涓洪潪0镞, 鐢诲嚭涓涓涓夌淮镄勯暱鏂逛綋銆傚綋topflag涓0镞, 涓夌淮锲惧舰涓嶅皝椤, 瀹为檯涓婂緢灏戣繖镙蜂娇鐢ㄣ

璇存槑: bar3d()鍑芥暟涓, 闀挎柟浣撶涓夌淮镄勬柟钖戜笉闅忎换浣曞弬鏁拌屽彉, 鍗冲嬬粓涓45搴︾殑鏂瑰悜銆

void far pieslice(int x, int y, int stangle, int endangle, int radius);
鐢讳竴涓浠(x, y)涓哄浑蹇, radius涓哄崐寰, stangle涓鸿捣濮嬭掑害, endangle 涓虹粓姝㈣掑害镄勬墖褰, 鍐嶆寜瑙勫畾鏂瑰纺濉鍏呫傚綋stangle=0, endangle=360 镞跺彉鎴愪竴涓瀹炲绩鍦, 骞跺湪鍦嗗唴浠庡浑镣规部X杞存e悜鐢讳竴𨱒″崐寰勚

void far sector(int x, int y, int stanle, intendangle, int xradius, int yradius);
鐢讳竴涓浠(x, y)涓哄浑蹇冨垎鍒浠xradius, yradius涓簒杞村拰y杞村崐寰, stangle涓鸿捣濮嬭, endangle涓虹粓姝㈣掔殑妞鍦嗘墖褰, 鍐嶆寜瑙勫畾鏂瑰纺濉鍏呫

浜屻佽惧畾濉鍏呮柟寮
TURBO C链夊洓涓涓庡~鍏呮柟寮忔湁鍏崇殑鍑芥暟銆备笅闱㈠垎鍒浠嬬粛:

void far setfillstyle(int pattern, int color);
color镄勫兼槸褰揿墠灞忓箷锲惧舰妯″纺镞堕滆壊镄勬湁鏁埚笺俻attern镄勫煎强涓庡叾绛変环镄勭﹀彿甯告暟濡傝〃7镓绀恒

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂瑷

--------------------------------------------------------------------------------

6 锲惧舰鍑芥暟

琛7. 鍏充簬濉鍏呭纺镙穚attern镄勮勫畾
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍
绗﹀彿甯告暟 鏁板 钖涔
钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
EMPTY_FILL 0浠ヨ儗鏅棰滆壊濉鍏
SOLID_FILL 1浠ュ疄濉鍏
LINE_FILL 2浠ョ洿绾垮~鍏
LTSLASH_FILL 3浠ユ枩绾垮~鍏(阒村奖绾)
SLASH_FILL 4浠ョ矖鏂灭嚎濉鍏(绮楅槾褰辩嚎)
BKSLASH_FILL 5浠ョ矖鍙嶆枩绾垮~鍏(绮楅槾褰辩嚎)
LTBKSLASH_FILL 6浠ュ弽鏂灭嚎濉鍏(阒村奖绾)
HATCH_FILL 7浠ョ洿鏂圭绣镙煎~鍏
XHATCH_FILL8浠ユ枩缃戞牸濉鍏
INTTERLEAVE_FILL 9浠ラ棿闅旂偣濉鍏
WIDE_DOT_FILL 10 浠ョ█鐤忕偣濉鍏
CLOSE_DOS_FILL 11 浠ュ瘑闆嗙偣濉鍏
USER_FILL 12 浠ョ敤鎴峰畾涔夊纺镙峰~鍏
铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛铍佲挛

闄USER_FILL(鐢ㄦ埛瀹氢箟濉鍏呭纺镙)浠ュ, 鍏跺畠濉鍏呭纺镙峰潎鍙鐢眘etfillstyle()鍑芥暟璁剧疆銆傚綋阃夌敤USER_FILL镞, 璇ュ嚱鏁板瑰~鍏呭浘妯″拰棰滆壊涓崭綔浠讳綍鏀瑰彉銆 涔嬫墍浠ュ畾涔塙SER_FILL涓昏佸洜涓哄湪銮峰缑链夊叧濉鍏呬俊鎭镞剁敤鍒版ら”銆

void far setfillpattern(char * upattern,int color);
璁剧疆鐢ㄦ埛瀹氢箟镄勫~鍏呭浘妯$殑棰滆壊浠ヤ緵瀵瑰皝闂锲惧舰濉鍏呫
鍏朵腑upattern鏄涓涓鎸囧悜8涓瀛楄妭镄勬寚阍堛傝繖8涓瀛楄妭瀹氢箟浜8x8镣归樀镄勫浘褰銆傛疮涓瀛楄妭镄8浣崭簩杩涘埗鏁拌〃绀烘按骞8镣, 8涓瀛楄妭琛ㄧず8琛, 铹跺悗浠ユや负妯″瀷钖戜釜灏侀棴鍖哄烟濉鍏呫

void far getfillpattern(char * upattern);
璇ュ嚱鏁板皢鐢ㄦ埛瀹氢箟镄勫~鍏呭浘妯″瓨鍏upattern鎸囬拡鎸囧悜镄勫唴瀛桦尯锘熴

void far getfillsetings(struct fillsettingstype far * fillinfo);
銮峰缑鐜拌屽浘妯$殑棰滆壊骞跺皢瀛桦叆缁撴瀯鎸囬拡鍙橀噺fillinfo涓銆傚叾涓璮illsettingstype缁撴瀯瀹氢箟濡备笅:
struct fillsettingstype{
int pattern; /* 鐜拌屽~鍏呮ā寮 * /
int color; /* 鐜拌屽~鍏呮ā寮 * /
};

链夊叧锲惧舰濉鍏呭浘妯$殑棰滆壊镄勯夋嫨, 璇风湅涓嬮溃渚嬬▼銆
渚11:
#include
main(){
char str[8]={10,20,30,40,50,60,70,80}; /*鐢ㄦ埛瀹氢箟锲炬ā*/
int gdriver,gmode,i;
struct fillsettingstype save; /*瀹氢箟涓涓鐢ㄦ潵瀛桦偍濉鍏呬俊鎭镄勭粨鏋勫彉閲*/
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\tc");
setbkcolor(BLUE);
cleardevice();
for(i=0;i<13;i++)
{
setcolor(i+3);
setfillstyle(i,2+i); /* 璁剧疆濉鍏呯被鍨 *
bar(100,150,200,50); /*鐢荤烦褰㈠苟濉鍏*/
bar3d(300,100,500,200,70,1); /* 鐢婚暱鏂逛綋骞跺~鍏*/
pieslice(200, 300, 90, 180, 90);/*鐢绘墖褰㈠苟濉鍏*/
sector(500,300,180,270,200,100);/*鐢绘き鍦嗘墖褰㈠苟濉鍏*/
delay(1000); /*寤舵椂1绉*/
}
cleardevice();
setcolor(14);
setfillpattern(str, RED);
bar(100,150,200,50);
bar3d(300,100,500,200,70,0);
pieslice(200,300,0,360,90);
sector(500,300,0,360,100,50);
getch();
getfillsettings(&save); /*銮峰缑鐢ㄦ埛瀹氢箟镄勫~鍏呮ā寮忎俊鎭*/
closegraph();
clrscr();
printf("The pattern is %d, The color of filling is
%d",
save.pattern, save.color); /*杈揿嚭鐩鍓嶅~鍏呭浘妯″拰棰滆壊鍊*/
getch();
}
浠ヤ笂绋嫔簭杩愯岀粨𨱒熷悗, 鍦ㄥ睆骞曚笂鏄剧ず鍑虹幇琛屽~鍏呭浘妯″拰棰滆壊镄勫父鏁板笺

涓夈佷换镒忓皝闂锲惧舰镄勫~鍏
鎴姝㈢洰鍓崭负姝, 鎴戜滑鍙鑳藉逛竴浜涚壒瀹氩舰鐘剁殑灏侀棴锲惧舰杩涜屽~鍏, 浣呜缮涓嶈兘瀵逛换镒忓皝闂锲惧舰杩涜屽~鍏呫备负姝, TURBO C 鎻愪緵浜嗕竴涓鍙瀵逛换镒忓皝闂锲惧舰濉鍏呯殑鍑芥暟, 鍏惰皟鐢ㄦ牸寮忓备笅:

void far floodfill(int x, int y, int border);

浣滆咃细 vc99 2005-1-12 04:22 锲炲嶆ゅ彂

热点内容
qq为什么密码修改好了就进不去 发布:2024-11-26 11:37:05 浏览:382
电容为啥耐压越大存储量越小 发布:2024-11-26 11:31:52 浏览:189
天然气车载储气瓶泄露处置脚本 发布:2024-11-26 11:17:36 浏览:255
换ip的服务器 发布:2024-11-26 11:17:29 浏览:76
容器平台怎么看配置 发布:2024-11-26 11:06:09 浏览:940
qq的xml源码 发布:2024-11-26 11:04:05 浏览:704
ip设计缓存设置 发布:2024-11-26 10:56:49 浏览:107
c语言k值 发布:2024-11-26 10:48:53 浏览:871
Java霸王大陆 发布:2024-11-26 10:44:52 浏览:705
乐高机器人怎么编程 发布:2024-11-26 10:36:12 浏览:374