⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图形处理.htm

📁 大家 看看 多多关注
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                              i++)<BR>{<BR>setcolor(i); 
                              /*设置不同作图色*/<BR>circle(320, 240, 20+i*10); 
                              /*画半径不同的圆*/<BR>delay(100); 
                              /*延迟100毫秒*/<BR>}<BR>for(i=0; i&lt;=15; 
                              i++)<BR>{<BR>setbkcolor(i); 
                              /*设置不同背景色*/<BR>cleardevice();<BR>circle(320, 240, 
                              20+i*10);<BR>delay(100);<BR>}<BR>closegraph();<BR>return 
                              0;<BR>}<BR>  另外,TURBO 
                              C也提供了几个获得现行颜色设置情况的函数。<BR>  int far 
                              getbkcolor(void); 返回现行背景颜色值。<BR>  int far 
                              getcolor(void); 返回现行作图颜色值。<BR>  int far 
                              getmaxcolor(void); 
                              返回最高可用的颜色值。<BR>基本图形函数<BR>  基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。<BR>一、画点<BR>  1. 
                              画点函数 void far putpixel(int x, int y, int color); 
                              该函数表示有指定的象元画一个按color 
                              所确定颜色的点。对于颜色color的值可从表3中获得而对x, 
                              y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器, 
                              它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480 
                              为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 
                              479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO 
                              C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int far 
                              getpixel(int x, int y); 它获得当前点(x, y)的颜色值。<BR>  2. 
                              有关坐标位置的函数<BR> int far getmaxx(void); 
                              返回x轴的最大值。<BR> int far getmaxy(void); 返回y轴的最大值。 
                              <BR> int far getx(void); 返回游标在x轴的位置。<BR> void far 
                              gety(void); 返回游标有y轴的位置。<BR> void far moveto(int x, 
                              int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。 <BR> void far 
                              moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, 
                              y+dy)的位置,移动过程中不画点。<BR>二、画线<BR>  1. 画线函数<BR>  TURBO 
                              C提供了一系列画线函数,下面分别叙述:<BR> void far line(int x0, int 
                              y0, int x1, int y1); 画一条从点(x0, y0)到(x1, 
                              y1)的直线。<BR> void far lineto(int x, int y); 
                              画一作从现行游标到点(x, y)的直线。 <BR> void far linerel(int dx, 
                              int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, 
                              y+dy)的直线。<BR> void far circle(int x, int y, int 
                              radius); 以(x, y)为圆心,radius为半径,画一个圆。<BR> void far 
                              arc(int x, int y, int stangle, int endangle,int 
                              radius); 
                              以(x,y)为圆心,radius为半径,从stangle开始到endangle结束<BR>(用度表示)画一段圆弧线。在TURBO 
                              C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 
                              270和360度(其它有关函数也按此规定不再重述)。 <BR> void ellipse(int 
                              x, int y, int stangle, int endangle,int 
                              xradius,int yradius);以(x, 
                              y)为中心,xradius,yradius为x轴和y轴半<BR>径,从角stangle 
                              开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 
                              画出一个完整的椭圆。 <BR> void far rectangle(int x1, int y1, 
                              int x2, inty2); 以(x1, y1)为左上角,(x2, 
                              y2)为右下角画一个矩形框。<BR> void far drawpoly(int 
                              numpoints, int far *polypoints); 
                              画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。      polypoints整型数组必须至少有2 
                              倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 
                              的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。<BR> 下面举一个用drawpoly()函数画箭头的例子。#include<STDLIB.H><BR>#include<GRAPHICS.H><BR>int 
                              main()<BR>{<BR>int gdriver, gmode, i;  <BR>int 
                              arw[16]={200,102,300,102,300,107,330,<BR>100,300,93,300,98,200,98,200,102};<BR>gdriver=DETECT;<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, 
                              "c:\\caic\\bgi");<BR>setbkcolor(BLUE);<BR>cleardevice();<BR>setcolor(12); 
                              /*设置作图颜色*/<BR>drawpoly(8, arw); 
                              /*画一箭头*/<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>设定线型函数<BR>  在没有对线的特性进行设定之前,TURBO C 
                              用其默认值,即一点宽的实线,但TURBO C 
                              也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。<BR>void 
                              far setlinestyle(intlinestyle,unsigned 
                              upattern,int thickness); 
                              该函数用来设置线的有关信息,其中linestyle是线形状的规定,<BR>见下表:<BR>有关线的形状(linestyle)<BR>━━━━━━━━━━━━━━━━━━━━━━━━━<BR>符号常数 
                              数值 含义<BR>─────────────────────────<BR>SOLID_LINE 0 
                              实线<BR>DOTTED_LINE 1 点线<BR>CENTER_LINE 2 
                              中心线<BR>DASHED_LINE 3 点画线<BR>USERBIT_LINE 4 
                              用户定义线<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ 
                              <BR>有关线宽(thickness)<BR>thickness是线的宽度,见下表。<BR>━━━━━━━━━━━━━━━━━━━━━━━━━<BR>符号常数 
                              数值 含义<BR>─────────────────────────<BR>NORM_WIDTH 1 
                              一点宽<BR>THIC_WIDTH 3 
                              三点宽<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ 
                              <BR>  对于upattern,只有linestyle选USERBIT_LINE 时才有意义 
                              (选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 
                              void far getlinesettings(struct 
                              linesettingstypefar 
                              *lineinfo);该函数将有关线的信息存放到由lineinfo 
                              指向的结构中,表中linesettingstype的结构如下:<BR> struct 
                              linesettingstype<BR> {<BR> int 
                              linestyle;<BR> unsigned upattern;<BR> int 
                              thickness;<BR> }<BR>  例如下面两句程序可以读出当前线的特性 struct 
                              linesettingstype *info;getlinesettings(info);void 
                              far setwritemode(int mode); 
                              该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO 
                              C的默认方式)。如果mode=1, 
                              则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作, 
                              实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。<BR>有关线型设定和画线函数的例子如下所示:<BR>#include<STDLIB.H><BR>#include<GRAPHICS.H><BR>int 
                              main()<BR>{<BR>int gdriver, gmode, 
                              i;<BR>gdriver=DETECT;<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, 
                              "c:\\caic\\bgi");<BR>setbkcolor(BLUE);<BR>cleardevice();<BR>setcolor(GREEN);<BR>circle(320, 
                              240, 98);<BR>setlinestyle(0, 0, 3); 
                              /*设置三点宽实线*/<BR>setcolor(2);<BR>rectangle(220, 140, 
                              420, 340);<BR>setcolor(WHITE);<BR>setlinestyle(4, 
                              0xaaaa, 1);<BR>/*设置一点宽用户定义线*/<BR>line(220, 240, 
                              420, 240);<BR>line(320, 140, 320, 
                              340);<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>封闭图形的填充 <BR>  填充就是用规定的颜色和图模填满一个封闭图形。 
                              <BR>一、先画轮廓再填充<BR>  TURBO C提供了一些先画出基本图形轮廓, 
                              再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBO C 以默认方式填充。 
                              下面介绍这些函数。 void far bar(int x1, int y1, int x2, int 
                              y2); 确定一个以(x1, y1)为左上角,(x2, 
                              y2)为右下角的矩形窗口,<BR>再按规定图模和颜色填充。<BR>  说明:此函数不画出边框,所以填充色为边框。 
                              void far bar3d(int x1, int y1, int x2, int y2,int 
                              depthint topflag);当topflag为非0时, 
                              画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。<BR>  说明: 
                              bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。 
                              <BR>  void far pieslice(int x,int y,int 
                              stangle,int endangle,int radius); 画一个以(x, 
                              y)为圆心,radius为半径,stangle为起始角度,endangle 
                              为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360 
                              时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。 <BR>  void far 
                              sector(int x, int y,int stanle,intendangle,int 
                              xradius, int yradius);画一个以(x, y)为圆心分别以xradius, 
                              yradius为x轴和y轴半径,stangle 
                              为起始角,endangle为终止角的椭圆扇形,再按规定方式填充。 
                              <BR>二、设定填充方式<BR>  TURBO C有四个与填充方式有关的函数。下面分别介绍: 
                              <BR>  void far setfillstyle(int pattern, int 
                              color); 
                              color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数如下表所示。关于填充式样pattern的规定:<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>符号常数 
                              数值 含义<BR>───────────────────────────<BR>EMPTY_FILL 
                              0 以背景颜色填充<BR>SOLID_FILL 1 以实填充<BR>LINE_FILL 2 
                              以直线填充<BR>LTSLASH_FILL 3 以斜线填充(阴影线)<BR>SLASH_FILL 4 
                              以粗斜线填充(粗阴影线)<BR>BKSLASH_FILL 5 
                              以粗反斜线填充(粗阴影线)<BR>LTBKSLASH_FILL 6 
                              以反斜线填充(阴影线)<BR>HATCH_FILL 7 以直方网格填充<BR>XHATCH_FILL 
                              8 以斜网格填充<BR>INTTERLEAVE_FILL 9 
                              以间隔点填充<BR>WIDE_DOT_FILL 10 
                              以稀疏点填充<BR>CLOSE_DOS_FILL 11 以密集点填充<BR>USER_FILL 12 
                              以用户定义式样填充<BR>  除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle() 
                              函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。 
                              之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。 void far 
                              setfillpattern(char * upattern,int color); 
                              设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。 
                              void far getfillpattern(char * upattern); 
                              该函数将用户定义的填充图模存入upattern指针指向的内存区域。<BR>  void far 
                              getfillsetings(struct fillsettingstypefar * 
                              fillinfo); 
                              获得现行图模的颜色并将存入结构指针变量fillinfo中。<BR>其中fillsettingstype结构定义如下: 
                              <BR>struct fillsettingstype<BR>{<BR>int pattern; 
                              /* 现行填充模式 * /<BR>int color; /* 现行填充模式 * /<BR>}; 
                              有关图形填充图模的颜色的选择,请看下面例程。#include<GRAPHICS.H><BR>main()<BR>{<BR>char 
                              str[8]={10,20,30,40,50,60,70,80}; 
                              /*用户定义图模*/<BR>int gdriver,gmode,i;<BR>struct 
                              fillsettingstype 
                              save;<BR>/*定义一个用来存储填充信息的结构变量*/<BR>gdriver=DETECT;<BR>initgraph(&amp;gdriver,&amp;gmode,"c:\\caic\\bgi");<BR>setbkcolor(BLUE);<BR>cleardevice();<BR>for(i=0;i&lt;13;i++)<BR>{<BR>setcolor(i+3);<BR>setfillstyle(i,2+i); 
                              /* 设置填充类型 *<BR>bar(100,150,200,50); 
                              /*画矩形并填充*/<BR>bar3d(300,100,500,200,70,1); /* 
                              画长方体并填充*/<BR>pieslice(200, 300, 90, 180, 
                              90);/*画扇形并填充*/<BR>sector(500,300,180,270,200,100);/*画椭圆扇形并填充*/<BR>delay(1000); 
                              /*延时1秒*/<BR>}<BR>cleardevice();<BR>setcolor(14);<BR>setfillpattern(str, 
                              RED);<BR>bar(100,150,200,50);<BR>bar3d(300,100,500,200,70,0);<BR>pieslice(200,300,0,360,90);<BR>sector(500,300,0,360,100,50);<BR>getch();<BR>getfillsettings(&amp;save);<BR>/*获得用户定义的填充模式信息*/<BR>closegraph();<BR>clrscr();<BR>printf("The 
                              pattern is %d, The color of filling is 
                              %d",<BR>save.pattern, 
                              save.color);<BR>/*输出目前填充图模和颜色值*/<BR>getch();<BR>}<BR>  以上程序运行结束后,在屏幕上显示出现行填充图模和颜色的常数值。 
                              <BR>三、任意封闭图形的填充<BR>  截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对任意封闭图形进行填充。为此,TURBO 
                              C 提供了一个可对任意封闭图形填充的函数,其调用格式如下: void far 
                              floodfill(int x, int y, int border); 其中:x, 
                      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -