c语言画图.
- 格式:doc
- 大小:209.00 KB
- 文档页数:34
C语言图形编程——绘图函数一屏幕和视口设置与清除函数36.setviewport() 设置图形视口函数37.clearviewport()清除图形视口函数38.cleardevice() 清除屏幕函数39.getviewsettings() 获取图形视口设置函数二调色板和颜色函数40.setpalette()设置调色板函数41.setallpalette()设置整个调色板函42.setbackcolor() 设置背景颜色函数43.setcolor() 设置颜色函数44.getbkcolor() 返回背景色函数45.getcolor() 返回当前绘图颜色46.getmaxcolor()返回最大颜色值函数47.getpalette() 获取调色板函数48.getpalettesize() 返回调色板大小函数49.getdefaultpalette() 获取缺省调色板函数三屏幕位置函数50.getmaxx()返回最大x坐标函数51.getmaxy() 返回最大y坐标函数52.getx() 返回x坐标函数53.gety() 返回y坐标函数54.moveto()函数55.moverel() 相对移动函数----------------------------------------------------Borland C++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数.一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等.下面给出具有这些功能的函数.一屏幕和视口设置与清除函数36.setviewport() 设置图形视口函数功能: 函数setviewport() 设置当前图形视口.用法: 函数调用方式为void setviewport(int left,int top,int right,int bottom,int clip);说明: 参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标。
c语言如何画图2007-06-12 14:38图形和图像函数包含在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()获取圆弧坐标函数(五)、填充函数76. setfillstyle() 设置填充图样和颜色函数77. setfillpattern() 设置用户图样函数78. floodfill() 填充闭域函数79. fillpoly() 填充多边形函数80. getfillsettings() 获取填充设置函数81. getfillpattern() 获取用户图样设置函数(六)、图像函数82. imagesize() 图像存储大小函数83. getimage() 保存图像函数84. putimage() 输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。
但对有些图形只能靠操作单个像素才能画出。
当然如果没有画像素的功能,就无法操作直线和曲线的函数。
c语言课程设计画图一、教学目标本课程的目标是让学生掌握C语言的基本知识,通过编程实践学会用C语言进行简单的图形绘制。
具体分为以下三个部分:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,并掌握基本的图形绘制原理。
2.技能目标:培养学生使用C语言进行图形编程的能力,能独立完成简单的图形绘制程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高其动手实践能力,培养其创新精神和团队协作精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等基础知识,以及图形绘制的基本原理和方法。
具体安排如下:1.第一章:C语言概述,使学生了解C语言的基本概念,掌握C语言的编译环境和基本语法。
2.第二章:数据类型和运算符,让学生掌握C语言的基本数据类型和运算符,为后续编程打下基础。
3.第三章:控制结构,引导学生掌握C语言的条件语句和循环语句,提高程序的控制能力。
4.第四章:函数,使学生了解函数的概念和作用,掌握函数的定义和调用方法。
5.第五章:图形绘制原理,讲解图形绘制的基本原理,引导学生掌握图形绘制的方法。
6.第六章:实践项目,让学生运用所学知识独立完成简单的图形绘制程序。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法,具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构等理论知识。
2.案例分析法:通过分析典型的图形绘制案例,使学生了解图形绘制的基本原理和方法。
3.实验法:让学生动手实践,独立完成图形绘制程序,提高其编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等,具体安排如下:1.教材:《C语言程序设计》2.参考书:《C语言 Primer》3.多媒体资料:课件、教学视频等4.实验设备:计算机、网络设备等五、教学评估本课程的评估方式包括平时表现、作业、考试等,具体安排如下:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解能力,占总评的30%。
利用C语言实现简单计算机图形计算机图形在现代计算机应用中起着重要的作用,可以用来实现各种效果和交互。
C语言作为一种广泛应用的编程语言,可以用来编写各种计算机图形程序。
本文将介绍利用C语言实现简单计算机图形的方法和技巧。
一、图形库的选择在使用C语言实现计算机图形时,我们需要选择一个合适的图形库来帮助我们进行图形的绘制和显示。
常用的图形库包括OpenGL、SDL、SFML等。
在选择图形库时,我们需要考虑到自己的需求以及所运行的平台,选择一个功能强大、易于使用的图形库。
二、绘制基本图形在开始实现图形程序之前,我们需要了解基本的图形绘制原理。
在C语言中,我们可以使用图形库提供的函数来实现各种图形的绘制。
比如,要绘制一个直线,我们可以使用线段绘制函数;要绘制一个圆形,我们可以使用圆形绘制函数。
通过调用相应的函数,我们可以实现各种基本图形的绘制。
三、实现图形效果除了基本图形的绘制,我们还可以利用C语言的一些特性来实现各种图形效果。
比如,我们可以使用循环语句和条件语句来实现动画效果;我们还可以使用数组和矩阵来处理图形的变换和旋转。
通过合理地运用这些特性,我们可以实现更加生动和复杂的图形效果。
四、键盘和鼠标事件实现计算机图形时,通常需要用户的输入来进行交互。
在C语言中,我们可以通过监听键盘和鼠标事件来实现用户的交互操作。
比如,我们可以通过监听键盘事件来控制图形的移动和变换;我们还可以通过监听鼠标事件来实现图形的选择和拖拽。
通过处理这些事件,我们可以实现更加灵活和交互的图形程序。
五、图形算法在实现计算机图形时,我们还需要了解一些常用的图形算法。
比如,直线的绘制可以使用Bresenham算法来实现,圆的绘制可以使用中点画圆算法来实现。
了解这些算法可以帮助我们更好地理解图形的绘制原理,并且优化我们的图形程序。
六、实例演示下面是一个使用C语言实现简单计算机图形的例子:```c#include <stdio.h>#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");// 绘制一个直线line(100, 100, 200, 200);// 绘制一个矩形rectangle(300, 300, 400, 400);// 绘制一个圆形circle(500, 500, 50);// 绘制一个椭圆ellipse(600, 600, 0, 360, 100, 50);getch();closegraph();return 0;}```以上代码使用了BGI图形库来实现图形的绘制和显示。
c语言如何画图2007-06-12 14:38图形和图像函数包含在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()获取圆弧坐标函数(五)、填充函数76. setfillstyle() 设置填充图样和颜色函数77. setfillpattern() 设置用户图样函数78. floodfill() 填充闭域函数79. fillpoly() 填充多边形函数80. getfillsettings() 获取填充设置函数81. getfillpattern() 获取用户图样设置函数(六)、图像函数82. imagesize() 图像存储大小函数83. getimage() 保存图像函数84. putimage() 输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。
但对有些图形只能靠操作单个像素才能画出。
当然如果没有画像素的功能,就无法操作直线和曲线的函数。
第2章 绘制图形【本章学习目标】z 掌握设置与关闭图形模式的函数。
z 能正确调用颜色函数设置图形的颜色。
z 掌握使用C 语言绘制图形的基本步骤。
z 掌握基本绘图函数。
z 了解图形模式下输出字符的函数。
C 语言不仅可以处理字符和数值,还可以绘制图形。
C 语言的图形函数可以方便地绘制直线、圆和圆弧等基本图形,这些基本图形又可以组合出复杂的图形。
本章简要介绍C 语言的绘图功能和常用图形函数。
学完本章内容后,您也能使用C 语言绘制出美丽的图形。
2.1 设置屏幕显示模式字符和图形是两类不同的显示对象,它们对屏幕的要求是不同的。
屏幕通常使用不同的显示模式显示这两类对象。
要使用C 语言正确处理字符和图形,就需要先掌握屏幕显示模式的基础知识,掌握设置屏幕显示模式的方法。
2.1.1 屏幕显示模式概述屏幕显示模式就是数据在屏幕上的显示方式。
C 语言把屏幕显示模式分为文本模式和图形模式两种。
文本模式通常用于显示文本,图形模式则用于显示图形。
C 语言默认屏幕显示模式为文本模式。
1. 屏幕坐标系显示器的工作原理与电视机的工作原理相似,其屏幕上规则地排列着许多细小的发光点。
这些发光点的明暗和色彩的不同组合,就组成了屏幕上绚丽多姿的画面。
为了便于指定屏幕上显示内容的位置,我们取屏幕左上角为坐标原点,第一行所在位置为x 轴,第一列所在位置为y 轴,建立如图2-1所示的屏幕直角坐标系。
建立屏幕直角坐标系后,就可以用有序数对(x ,y)表示屏幕上点的位置。
在点的坐标(x ,y)中,x 指定点的列坐标,y 指定点的行坐标。
例如,屏幕左上角点的坐标即为(0,0)。
而屏幕上其它点的坐标则与屏幕显示模式有关,同一个点的坐标可能随着屏幕显示模式的改变而改变。
请读者注意:数学中建立平面直角坐标系后,平面上任意一点的位置可以用一个有序实数对来表示。
建立屏幕直角坐标系后,屏幕上任意一点的位置可以用一个有序整数对来表示。
而屏幕直角坐标系的坐标原点在屏幕的左上角,y 轴的正方向yxO图2-1 屏幕坐标系向下,坐标轴的单位与屏幕显示模式有关,这些都是与数学中的平面直角坐标系不同之处。
c语言画图基本函数基本图形函数包括画点,线以及其它一些基本图形的函数。
本节对这些函数作一全面的介绍。
1、画点I. 画点函数 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)的颜色值。
II、有关坐标位置的函数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)的位置,移动过程中不画点。
2、画线I. 画线函数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)的直线。
C语言中的画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。
本节对这些函数作一全面的介绍。
1、画点I. 画点函数 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)的颜色值。
II、有关坐标位置的函数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)的位置,移动过程中不画点。
2、画线I. 画线函数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)的直线。
VC绘图/游戏简易教程--1:创建新项目[本期目标] 学会在VC 里面创建项目,并写简单的程序。
VC 写程序要有项目的概念,一个项目可以有多个 .cpp 文件,多个项目构成一个工作区。
先记住这两个英文单词吧:∙Workspace: 工作区∙Project: 项目现在开始创建一个新项目。
∙VC6 创建新项目请参考这个视频:/news/View.aspx?id=65∙VC2008 创建新项目请参考:/news/View.aspx?id=85∙VC2010 与VC2008 相似。
看明白后,自己动手建立项目试试,并输入以下代码:#include <stdio.h>void main(){printf("Hello World!");}尤其是之前用tc 的同学,请务必创建新项目试一试。
成功执行后,会看到屏幕上有“Hello World!”几个字符。
然后,再重新输入以下代码试试(无需理解代码含义):#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);line(200, 240, 440, 240);line(320, 120, 320, 360);getch();closegraph();}执行后应该可以看到屏幕正中央有一个十字。
看到该十字后,本节课结束。
VC绘图/游戏简易教程--2:简单绘图,学习单步执行[本期目标]学会简单绘图,并学会简单调试。
先看看上一课的代码,我加上了注释#include <graphics.h> // 绘图库头文件,绘图语句需要#include <conio.h> // 控制台输入输出头文件,getch()语句需要void main(){initgraph(640, 480); // 初始化640x480的绘图屏幕line(200, 240, 440, 240); // 画线(200,240) - (440,240)line(320, 120, 320, 360); // 画线(320,120) - (320,360)getch(); // 按任意键closegraph(); // 关闭绘图屏幕}解释一下:1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。
注意:左上角是原点(0,0),也就是说,y轴和数学的y轴是相反的。
2. getch实现按任意键功能,按任意键后,程序继续执行。
否则,程序会立刻执行closegraph以至于看不到绘制的内容。
[作业]用线条画出更多的图形,要求不少于10条直线。
[学习单步执行]完成作业后(务必完成),开始试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了):1. 将VC取消最大化,并缩小窗口,能看到代码就行。
2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。
3. 当箭头指向initgraph语句时,按F10,能看到窗口发生了变化。
4. 将新的绘图窗口和VC并排放,相互不要有覆盖。
这步很重要,否则绘图内容将会被VC窗口覆盖。
5. F10执行getch后,记得激活绘图窗口,并按任意键,否则程序不会继续执行。
6. closegraph后,直接按F5执行全部剩余程序,结束。
单步执行很重要,可以让你知道程序执行到哪里是什么效果,哪条语句执行出了问题等等。
更详细的调试资料,请打开:/p/vcgraphics/downloads/list下载里面的VC6_how_to_debug.zip该文档写的调试的东西比较多,看一下大概有个了解,以后都会用到(不过以后我就不再讲了)[作业2]仍然是写一个用直线绘制的图形,并熟悉调试过程。
注:1. 许多学校都忽略了调试部分,如果你不曾用过调试,请务必熟练该过程。
2. win-tc不带有任何调试功能,即便你不用vc,也请不要使用win-tc。
调试是相当相当重要的。
VC绘图/游戏简易教程--3:熟悉更多的绘图语句[学习目标]学会更多的绘图语句[常用的绘图语句]line(x1, y1, x2, y2); // 画直线(x1,y1)-(x2,y2),都是整形circle(x, y, r); // 画圆,圆心为(x,y),半径为rputpixel(x, y, c); // 画点(x,y),颜色c还有很多,如画椭圆、圆弧、矩形、多边形,等等,请参考绘图帮助文件(第一课的绘图库的下载里面有)[设置颜色]setcolor(c); // 设置绘图颜色,如setcolor(RED)设置为红色等常用的颜色常量可以用:BLACK 黑DARKGRAY 深灰BLUE 蓝LIGHTBLUE 亮蓝GREEN 绿LIGHTGREEN 亮绿CYAN 青LIGHTCYAN 亮青RED 红LIGHTRED 亮红MAGENTA 紫LIGHTMAGENTA 亮紫BROWN 棕YELLOW 黄LIGHTGRAY 浅灰WHITE 白[配出更多的颜色]颜色除了前面写的16种以外,还可以自由配色。
格式:RGB(r, g, b)r / g / b 分别表示红色、绿色、蓝色,范围都是0~255。
例如,RGB(255,0,0) 表示纯红色。
红色和绿色配成黄色,因此RGB(255,255,0) 表示黄色。
嫌调色麻烦可以用画笔里面的调色试试,调好了以后直接将数值抄过来就行。
例如,画两条红色浓度为200的直线,可以写:setcolor(RGB(200,0,0));line(100,100, 200,100);line(100,120, 200,120);[用数字表示颜色]除了用RGB(r,g,b)方式外,还可以用16进制表示颜色,格式:0xrrggbb例如,setcolor(0xff0000) 和setcolor(RGB(255,0,0)) 是等效的。
[延时语句]这个很简单Sleep(n) 就可以表示n 毫秒的延时。
例如延时3秒,可以用Sleep(3000);[作业]1. 简单看一下绘图库的帮助文件,了解更多的绘图语句。
2. 绘制更丰富的图形内容,不低于20行。
3. 将延时语句适当的插入上个作业的代码中,看看执行效果。
注:绘图语句不需要记住,用的时候翻翻手册就行。
VC绘图/游戏简易教程--4:结合流程控制语句来绘图[学习目标]熟练使用循环、判断语句[熟悉for语句]这步需要自学,看看自己手边的书,是怎样讲for语句的,简单看看就行。
[范例]例如,画10条直线的代码:#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);for(int y=100; y<200; y+=10)line(100, y, 300, y);getch();closegraph();}换一下循环的范围和间隔,看看效果。
还可以用来画渐变色,例如:#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);for(int y=0; y<256; y++){setcolor(RGB(0,0,y));line(100, y, 300, y);}getch();closegraph();}[熟悉if语句]这步需要自学,看看自己手边的书,是怎样讲if语句的,简单看看就行。
配合if语句,实现红色、蓝色交替画线:#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);for(int y=100; y<200; y+=10){if ( y/10 % 2 == 1) // 判断奇数行偶数行setcolor(RGB(255,0,0));elsesetcolor(RGB(0,0,255));line(100, y, 300, y);}getch();closegraph();}[作业]1. 画围棋棋盘。
2. 画中国象棋的棋盘3. 画国际象棋的棋盘,看手册找到颜色填充语句,实现过期象棋棋盘的区块填充。
4. 自学while语句。
学到这里,已经可以画出很多东西了。
把自己想象中的图案绘制一下吧。
VC绘图/游戏简易教程--5:数学知识在绘图中的运用[学习目标]理解数学的重要性1. 最简单的,来个全屏的渐变色吧,是上一课的扩展。
就是需要将0~255的颜色和0~479的y轴对应起来c 表示颜色,范围0~255y 表示y轴,范围0~479于是:c / 255 = y / 479c = y / 479 * 255 = y * 255 / 479 (先算乘法再算除法可以提高精度)看代码:#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);int c;for(int y=0; y<480; y++){c = y * 255 / 479;setcolor(RGB(0,0,c));line(0, y, 639, y);}getch();closegraph();}试试效果吧。
2. 画一个圆形的渐变色首先,我们要用到圆形的基本公式:x*x + y*y = r*r让弧度从0~2*3.14,然后需要根据弧度和半径算出(x,y),用pi表示圆周率用r表示半径用a表示弧度(小数)用c表示颜色于是:x=r*cos(a)y=r*sin(a)c=a*255/(2*pi)看看代码:#include <graphics.h>#include <conio.h>#include <math.h>void main(){initgraph(640, 480);int c;double a;int x, y, r=200;for(a=0; a<PI*2; a+=0.0001){x=(int)(r*cos(a) + 320 + 0.5);y=(int)(r*sin(a) + 240 + 0.5);c=(int)(a*255/(2*PI) + 0.5);setcolor(RGB(c,0,0));line(320, 240, x, y);}getch();closegraph();}VC绘图/游戏简易教程--6:实现简单动画所谓动画,其实是连续显示一系列图形而已。
结合到程序上,我们需要以下几个步骤:1. 绘制图像2. 延时3. 擦掉图像循环以上即可实现动画。