欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新C语言图形编程.doc

    • 资源ID:33835296       资源大小:203KB        全文页数:19页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新C语言图形编程.doc

    精品资料C语言图形编程.C的图形编程一、屏幕显示模式1、文本模式在文本模式又称字符模式。在此模式下整个屏幕被划分成(25行,80列),共25*80个文本单元,每个单元包括一个字符和一个属性, 字符即ASCII 码字符, 属性规定该字符的颜色和强度。(1,1)2580屏幕区坐标原点在屏幕的左上角。如下图所示:在<conio.h>头文件中定义了文本模式下一些函数常用的有;(1) 定义一个文本窗口void window(int left, int top, int right, int bottom); 如要定义一个窗口左上角在屏幕(20, 5)处, 大小为30列15行的窗口可写成:      window(20, 5, 50, 25);(2)   文本窗口颜色的设置        void textbackground(int color); /设置背景颜色:      void textcolor(int color); /设置字符颜色:    有关颜色的定义见表1。 (3) 光标定位   void gotoxy(int x, int y);(4) 清屏void clrscr(void);(5) 其它函数一、窗口内文本的输出函数int cprintf("<格式化字符串>", <变量表>); int cputs(char *string); int putch(int ch);cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf() 函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制, 而printf() 函数的输出为整个屏幕。     cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样,  只是受窗口大小的限制。     putch()函数输出一个字符到窗口内。二、窗口内文本的输入函数         int getche(void);    getche()函数从键盘上获得一个字符, 在屏幕上显示的时候, 如果字符超过了窗口右边界, 则会被自动转移到下一行的开始位置。例1:下面这个程序使用了关于窗口大小的定义、颜色的设置等函数, 在一个屏幕 上不同位置定义了7个窗口, 其背景色分别使用了7种不同的颜色。#include <stdio.h>#include <conio.h> /文本模式下的函数void main(void) int i; char *c="BLACK", "BLUE", "GREEN", "CYAN", "RED", "MAGENTA", "BROWN", "LIGHTGRAY" textbackground(0); /* 设置屏幕背景色 */ clrscr(); /* 清除文本屏幕 */ cputs(c0); for(i=1; i<8; i+) window(10+i*5, 5+i, 30+i*5, 15+i); /* 定义文本窗口 */ textbackground(i); /* 定义窗口背景色 */ clrscr(); cputs(ci); /* 清除窗口 */ getch(); 表1. 有关颜色的定义   符号常数         数值      含义         字符或背景   BLACK              0         黑          两者均可   BLUE              1         兰          两者均可   GREEN              2         绿          两者均可   CYAN               3         青          两者均可   RED               4         红          两者均可   MAGENTA           5        洋红         两者均可   BROWN             6         棕          两者均可   LIGHTGRAY        7        淡灰         两者均可   DARKGRAY         8        深灰         只用于字符   LIGHTBLUE         9        淡兰         只用于字符   LIGHTGREEN      10       淡绿         只用于字符   LIGHTCYAN         11       淡青         只用于字符   LIGHTRED          12       淡红         只用于字符   LIGHTMAGENTA  13       淡洋红       只用于字符   YELLOW             14       黄           只用于字符   WHITE              15       白           只用于字符   BLINK             128      闪烁         只用于字符 例2:捕获键盘按键。键盘扫描码:每个键都有一个两字节的扫描码,其格式:HighLowHigh #define ESC 0x011B#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4B00#define RIGHT 0x4D00#define ENTER 0x1C0D在头文件<bios.h>中定义如下函数,用以捕获键盘按键。int bioskey(int mode); /此函数声明于 bios.hmode为1时,如有按键盘,则记录其扫描码至缓冲区,并返回其扫描码;无按键则返回0; 不清除缓冲区。mode为0时,从键盘缓冲区取出按键,并清除缓冲区。若没有的话,则等待。271High如:ESC High720UPHigh800DOWN750HighLEFT770HighRIGHT590High F1600HighF23065HighAHigh4490Z3097Higha30122Highz#include <stdio.h>#inlcude <bios.h>union keyTest int c; char ch2;void main(void) union keyTest k;while(1)while(bioskey(1)= =0); /* function 1 returns 0 until a key is pressed */k.c = bioskey(0); /* function 0 returns the key that is waiting */ printf(“High=%d,Low=%dn”,k.c,k .ch1,k .ch0);例3:C提供的随机函数:void randomize();  /初始化随机数发生器int random(int ubound); /返回范围在0到ubound - 1之间的一个随机整数。2、图形模式不同的显示器适配器(显卡)有不同的图形分辨率。即是同一显卡, 在不同模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显卡种类将显示器设置成为某种图形模式。VGALO           0         16色  640*200            VGA          VGAMED        1         16色  640*350                                VGAHI           2         16色  640*480(1)图形模式的初始化在屏幕作图之前, 必须根据显示器适配器种类将显示器设置成为某种图形模式, 在未设置图形模式之前, 微机系统默认屏幕为文本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形模式, 可用下列图形初始化函数: void initgraph(int *gdriver, int *gmode, char *path);表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     EGA64        4            EGA64LO         0         16色  640*200                                EGA64HI         1          4色  640*350     EGAMON       5        EGAMONHI         0          2色  640*350     IBM8514      6            IBM8514LO       0        256色  640*480                               IBM8514HI       1        256色 1024*768     HERC         7            HERCMONOHI      0          2色  720*348     ATT400       8            ATT400C0         0          C0   320*200                               ATT400C1        1          C1   320*200                               ATT400C2        2          C2   320*200                                ATT400C3        3          C3   320*200                                ATT400MED      4          2色  320*200                                ATT400HI        5          2色  320*200     VGA          9            VGALO           0         16色  640*200                               VGAMED          1         16色  640*350                               VGAHI            2         16色  640*480     PC3270       10           PC3270HI         0          2色  720*350     DETECT       0            用于硬件测试 例子1:使用图形初始化函数设置VGA高分辨率图形模式      #include <graphics.h>      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;      例子2:自动进行硬件测试后进行图形初始化 有时编程者并不知道所用的图形显示器适配器种类, 或者需要将编写的程序用于不同图形驱动器, Turbo C提供了一个自动检测显示器硬件后进行图形初始化的方法。 即用gdriver= DETECT 语句后再跟 initgraph()函数就行了。         例3:#include <graphics.h>int main() int gdriver=DETECT, gmode;initgraph(&gdriver,&gmode, c:tc");  bar3d(50, 50, 150, 30, 1);  getch();  closegraph();  return 0;(2)退出图形状态Turbo C提供了函数closegraph(), 其调用格式为:      void far closegraph(void);     调用该函数后可退出图形状态而进入文本方式(Turbo C 默认方式), 并释放用于保存图形驱动程序和字体的系统内存。(3)屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置, 同样分为背景色的设置和前景色的设置。在 Turbo C中分别用下面两个函数。      void far setbkcolor( int color); /设置背景色:            void far setcolor(int color); /设置作图色:      其中color 为图形方式下颜色的规定数值, 对EGA, VGA显示器适配器, 有关颜色的符号常数及数值见下表所示。                 表3 有关屏幕颜色的符号常数表   符号常数      数值     含义           符号常数      数值     含义   BLACK          0       黑色           DARKGRAY       8       深灰   BLUE           1       兰色           LIGHTBLUE      9       深兰   GREEN          2       绿色           LIGHTGREEN     10      淡绿   CYAN           3       青色           LIGHTCYAN      11      淡青   RED            4       红色           LIGHTRED       12      淡红   MAGENTA     5       洋红           LIGHTMAGENTA   13      淡洋红   BROWN         6       棕色           YELLOW         14      黄色   LIGHTGRAY  7       淡灰           WHITE          15      白色 清除图形屏幕内容使用清屏函数, 其调用格式如下:      voide far cleardevice(void);     有关颜色设置、清屏函数的使用。 例4: #include<stdio.h>   #include<graphics.h> int main()    int gdriver, gmode, i;      gdriver=DETECT;initgraph(&gdriver, &gmode", "");      setbkcolor(0);                        cleardevice();        for(i=0; i<=15; i+)           setcolor(i);                           circle(320, 240, 20+i*10);             delay(100);                          for(i=0; i<=15; i+)                   setbkcolor(i);                   cleardevice();             circle(320, 240, 20+i*10);             delay(100);                closegraph();          return 0;(4). 基本图形函数    基本图形函数包括画点, 线以及其它一些基本图形的函数。本节对这些函数 作一全面的介绍。 一、 画点1. 画点函数      void far putpixel(int x, int y, int color);     该函数表示有指定的象素画一个按color所确定颜色的点。对于颜色color的 值可从表3中获得而对x, y是指图形象元的坐标。对VGA适配器,  它的最高分辨率为640x480,屏幕的左上角坐标为(0, 0), 右下角坐标为(639, 479),    关于点的另外一个函数是:      int far getpixel(int x, int y);     它获得当前点(x, y)的颜色值。     2. 有关坐标位置的函数  int far getmaxx(void);     /返回x轴的最大值。      int far getmaxy(void); /返回y轴的最大值。      int far getx(void); /返回光标在x轴的位置。      void far gety(void);     /返回光标有y轴的位置。      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为半径, 从stangle开始到endangle结束(用度表示) 画一段圆弧线。在TURBO C中规定x轴正向为0度, 逆时针方向旋转一周,  依次为 90, 180, 270和360度(其它有关函数也按此规定, 不再重述)。      void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);     以(x, y)为中心, xradius, yradius为x轴和y轴半径, 从角stangle 开始到 endangle结束画一段椭圆线, 当stangle=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 给出的多边形。 polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际 多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。 2. 设定线型函数    线型包括:宽度和形状。其中宽度只有两种选择: 一点宽和三点宽。而线的形状则有五种。在没有对线的特性进行设定之前, TURBO 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           用户定义线      thickness是线的宽度, 见表6。           表6. 有关线宽(thickness)      符号常数            数值           含义      NORM_WIDTH           1             一点宽      THIC_WIDTH           3             三点宽     对于upattern, 只有linestyle选USERBIT_LINE 时才有意义( 选其它线型, uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象素, 如果那位为1, 则该象素打开, 否则该象素关闭。 有关线型设定和画线函数的例子如下所示。#include<stdlib.h> #include<graphics.h> int main()  int gdriver, gmode, i;     gdriver=DETECT;  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);     当topflag为非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轴正向画一条半径。        void far sector(int x, int y,   int  stanle,   intendangle,   int xradius, int yradius);     画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,  stangle为起始角, endangle为终止角的椭圆扇形, 再按规定方式填充。 二、设定填充方式     TURBO C有四个与填充方式有关的函数。下面分别介绍:      void far setfillstyle(int pattern, int color);     color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数如表7所示。             表7. 关于填充式样pattern的规定             符号常数          数值      含义             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_FILL        8        以斜网格填充        INTTERLEAVE_FILL   9        以间隔点填充        WIDE_DOT_FILL      10       以稀疏点填充        CLOSE_DOS_FILL     11       以密集点填充        USER_FILL          12       以用户定义式样填充      除USER_FILL(用户定义填充式样)以外, 其它填充式样均可由setfillstyle()函数设置。当选用USER_FILL时, 该函数对填充图模和颜色不作任何改变。 之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。     void far setfillpattern(char * upattern,int color);     设置用户定义的填充图模的颜色以供对封闭图形填充。     其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点, 8个字节表示8行, 然后以此为模型向个封闭区域填充。     void far get

    注意事项

    本文(最新C语言图形编程.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开