c语言画图.

合集下载

C语言图形编程——绘图函数

C语言图形编程——绘图函数

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语言如何画图

c语言如何画图

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语言课程设计画图一、教学目标本课程的目标是让学生掌握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语言作为一种广泛应用的编程语言,可以用来编写各种计算机图形程序。

本文将介绍利用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语言如何画图

c语言如何画图

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语言教程之绘制图形

第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语言画图基本函数

c语言画图基本函数

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语言的作图

C语言的作图
2.closegraph()函数结束图形界面
一.C语言的作图函数在GRAPHICS.H中。
二.制图须加入以下代码初始化、结束图形界面:
#include<graphics.h>
main()
{
int graphdriver=DETECT,graphmode;
initgraph(&graphdriver,&graphmode,"");
一.C语言的作图函数在GRAPHICS.H中。
二.制图须加入以下代码初始化、结束图形界面:
三.颜色设置
四.图形的坐标
五.基本的图形函数
六.人机交换的一个方法:
[原文]
现在的老师大多都学习过C语言的基础知识,但是由于对函数的了解不多,不能应用与教学,此处介绍的是基本绘图知识,供大家一起研究。
......
closegraph();
......
}
1.initgraph()的用法:
void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver)
函数的作用是从磁盘装入一个图形驱动程序来初始化图形界面,并将系统设置为图形模式。*graphdriver是一个整数,它指定所用的图形驱程(同的驱程。*graphmode也是一个整数,说明初始图形模式,在上例中*.graphmode被设置为检测到的驱程的最高分辨率。pathtodriver指定驱程(*.BGI)文件的目录路径。空(NULL)表示驱程在当前目录。你可查找*.BGI文件,把其中一个放入程序所在目录。其中EGAVGA.BGI的最大值是640*480,16色,IBM8514.BGI的最大值是1028*768,256色。

C语言中的画图函数

C语言中的画图函数

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语言绘图

C语言绘图
系统默认前景色是白色,背景色是黑色 设置背景色: setbkcolor(int color); 设置前景色:setcolor(int color);

符号名 数值 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 颜色 深灰 浅蓝 浅绿 浅青 浅红 浅紫 黄 白
INTERLEAVE _FILL WIDE_DOT _FILL CLOSE_DOT _FILL
8 9
10 11
斜网络线填充
间隔点填充 稀疏点填充 密集点填充
BKSLASH _FILL
LTBKSLASH _FILL
5 6
粗反斜线填充 (粗阴影线)
反斜线填充 (阴影线)
USER _FILL
12
用户自定义模 式填充

画矩形和多边形


画矩形:rectangle(int x1,int y1,int x2,int y2); 左上角为 (x1,y1),右下角为(x2,y2). 画多边形:drawpoly(int n, int *pxy) 绘制具有n个顶点的多边形,n个点的坐标值存放在数 组pxy中。如果数组的最后一个坐标值和第一个坐标值 相同,则画一个封闭图形。如drawpoly(4,pxy); pxy中的 坐标为[x1,y1,x2,y2,x3,y3,x4,y4] 画三维矩形:bar3d(int x1,int y1, int x2,int y2,int depth,int top); depth表示以像素为单位的深度(厚度); top表示是否需要封顶,0封顶,非0封顶。(线型、颜 色、填充方式按当前设置)

利用VC编写简单的绘图程序

利用VC编写简单的绘图程序

利用VC编写简单的绘图程序上机实验环境亦可选择Microsoft Visual C++〔以下简称VC〕。

VC是美国微软公司生产的基于其Windows系统的软件开发工具。

它具有使用灵活,并与32位Windows内核〔使用于Windows 2000/Windows XP〕高度兼容的特点,从而被Windows程序员们广泛使用。

VC 在图形图像处理方面有着广泛的应用,MFC中提供了大量的图形图像函数,下面我们将对使用VC/MFC编写简单的绘图程序。

一、使用VC编写MFC单文档应用程序很简单,只需要按照下面几个步骤进行:1.翻开MSVC集成开发环境。

双击桌面或“开始〞菜单中的Microsoft VisualC++6.0,不久将看到VC的编辑窗口,如图3-5:图1 VC启动界面2.选择菜单“File | New〞,在弹出的对话框中1)单击上方的选项卡“Project〞,2)选择“MFC AppWizard(exe)〞,3)在“Project name〞一栏中填写工程名,例如draw,4)在“Location〞一栏中填写你想把文件存放的位置〔目录〕。

然后按“OK〞。

见图2。

注意:第4〕步中指定你自己的目录,不要使用系统的缺省目录或者随便放在根目录或者其他的目录下。

这样便于你找到自己编写的程序。

图2 应用程序向导主界面3.在MFC Appwizard-Step 1中选择“Single Document〞,即单文档应用程序,点击“Finish〞,如图3所示。

注意:对于下面的操作我们可以忽略,直接点Finish即可。

图3 应用程序向导中选择单文档视图4.系统弹出一个当前工程信息的对话框,如图4所示,直接点“OK〞即可。

图4 新建工程信息5.进入程序编写的主界面,屏幕左下方为工作区,如图5所示,工作区中共有三种视图,分别是:1)文件视图〔“FileView〞〕,主要包括头文件,cpp文件以及资源文件。

我们在头文件中一般添加类的定义,类的成员变量和函数的声明,而在cpp文件中具体实现函数。

C语言画圆椭圆

C语言画圆椭圆

C语言画图实验代码,包含画直线,画圆,椭圆#include "graphics.h"#include "conio.h"#include "dos.h"#include "math.h"#include "stdio.h"/* 直线中点算法*/void midpointline(int x0,int y0,int x1,int y1,int color ) {int x,y;int a,b,c,d,d1,d2;a=(y0-y1);b=(x1-x0);d=a+a+b;d1=a+a;d2=a+b+a+b;x=x0;y=y0;putpixel(x,y,color);while(x<x1){if(d<0){x++;y++;d+=d2;}else{x++;d+=d1;}putpixel(x,y,color);}}/* 直线DDA算法*/DDA_line(int x1,int y1,int x2,int y2,int color){int i;float increx,increy,x,y,length,xx,yy;if(abs(x2-x1)>abs(y2-y1))length=abs(x2-x1);elselength=abs(y2-y1);increx=(x2-x1)/length;increy=(y2-y1)/length;x=x1;y=y1;for(i=1;i<=length;i++)yy=y+0.5;putpixel((int)xx,(int)yy,color);x=x+increx;y=y+increy;}}/* 椭圆中点算法*/void MidBresenhamllipse(double a,double b,int color) {double x,y, d1,d2;x=0;y=b;d1=b*b+a*a*(-b+0.25);putpixel(x+300,y+200,color);putpixel(-x+300,-y+200,color);putpixel(-x+300,y+200,color);putpixel(x+300,-y+200,color);while(b*b*(x+1)<a*a*(y-0.5)){if(d1<=0){d1+=b*b*(2*x+3);x++;}else{d1+=b*b*(2*x+3)+a*a*((-2)*y+2);x++;y--;}putpixel(x+300,y+200,color);putpixel(-x+300,-y+200,color);putpixel(-x+300,y+200,color);putpixel(x+300,-y+200,color);}d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;while(y>0){{d2+=b*b*(2*x+2)+a*a*(-2*y+3);x++;y--;}else{d2+=a*a*(-2*y+3);y--;}putpixel(x+300,y+200,color);putpixel(-x+300,-y+200,color);putpixel(-x+300,y+200,color);putpixel(x+300,-y+200,color);}}/* 参数法画椭圆*/void cs_ellipse(int x0,int y0,int a,int b,int dt){int x,y,n,i;float t=0,t1;t1=dt*0.0174533;n=360/dt;moveto(x0+a,y0);for(i=1;i<n;i++){t=t+t1;x=x0+a*cos(t);y=y0+b*sin(t);lineto(x,y);}lineto(x0+a,y0);}void cs_Ellipse(int x0,int y0,int a1,int b1,int color1) {int i,x=x0,y=y0,a=a1,b=b1,color=color1;cs_ellipse(x,y,a,b,1);}/* 中点Bresenham算法画圆*/void BresenhemCircle(int x0,int y0,double r,int color){int x,y,d;x=0;y=(int)r;d=(int)(3-2*r);while(x<y){cirpot(x0,y0,x,y,color);if(d<0)d+=4*x+6;else{d+=4*(x-y)+10;y--;}x++;}if(x==y)cirpot(x0,y0,x,y,color);}int cirpot(int x0,int y0,int x,int y,int color){putpixel((x0+x),(y0+y),color);putpixel((x0+y),(y0+x),color);putpixel((x0+y),(y0-x),color);putpixel((x0+x),(y0-y),color);putpixel((x0-x),(y0-y),color);putpixel((x0-y),(y0-x),color);putpixel((x0-y),(y0+x),color);putpixel((x0-x),(y0+y),color);return(0);}/* 参数法画圆*/void cs_circle(int x0,int y0,int r,int dt){int x,y,n,i;float t=0,t1;t1=dt*0.0174533;n=360/dt;moveto(x0+r,y0);for(i=1;i<n;i++){t=t+t1;x=x0+r*cos(t);y=y0+r*sin(t);lineto(x,y);}lineto(x0+r,y0);}void cs_Circle(int x0,int y0,int r1,int color1){int i,x=x0,y=y0,r=r1,color=color1;cs_circle(x,y,r,1);}void fun(){printf("************************************************************\n");printf("* input '1' ues midpointline painting line ! *\n");printf("* input '2' ues DDA_line painting line! *\n");printf("* input '3' ues system function painting line ! *\n");printf("* input '4' ues midBresenham painting elliptic ! *\n");printf("* input '5' ues parametric painting elliptic ! *\n");printf("* input '6' ues system function painting elliptic ! *\n");printf("* input '7' ues midBresenham painting circle ! *\n");printf("* input '8' ues midBresenham painting circle ! *\n");printf("* input '9' ues parametric painting circle ! *\n");printf("* input 'a' print all graphics *\n");printf("* input 'E' exit system! *\n");printf("************************************************************\n"); }/*主函数块*/void main(){int gdriver=DETECT,gmode;/*setbkcolor(9);*/char c;initgraph(&gdriver,&gmode,"c:\tc");fun();scanf("%c",&c);do{switch(c){case '1': midpointline(120,220,200,160,20);break;case '2': DDA_line(110,120,200,340,10);break;case '3': line(110,120,200,240);break;case '4': MidBresenhamllipse(34,55,6);break;case '5': cs_Ellipse(120,240,20,120,21);break;case '6': ellipse(110,250,0,360,100,40);break;case '7': BresenhemCircle(100,100,50,4);break;case '8': circle(100,100,67);break;case '9': cs_Circle(100,100,23,2);break;case 'a': midpointline(120,220,200,160,20);DDA_line(110,120,200,340,10);line(110,120,200,240);MidBresenhamllipse(34,55,6);cs_Ellipse(120,240,20,120,21);ellipse(110,250,0,360,100,40);BresenhemCircle(100,100,50,4);circle(100,100,67);cs_Circle(100,100,23,2);break;}printf("Input any key to continue\n");getch();cleardevice();fun();scanf("%c",&c);}while(c!='E');printf("exit system!\n");closegraph();}。

用C画图最快的方法

用C画图最快的方法

用C画图最快的方法公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]有的人往往会问这样的问题,如何提高画图的速度,除了一些命令我们需要掌握之外,还要遵循一定的作图原则:1.作图步骤:设置图幅→设置单位及精度→建立若干图层→设置对象样式→开始绘图。

2.绘图始终使用1:1比例。

为改变图样的大小,可在打印时于图纸空间内设置不同的打印比例。

3.为不同类型的图元对象设置不同的图层、颜色及线宽,而图元对象的颜色、线型及线宽都应由图层控(BYLAYER)。

4.需精确绘图时,可使用栅格捕捉功能,并将栅格捕捉间距设为适当的数值。

5.不要将图框和图形绘在同一幅图中,应在布局(LAYOUT)中将图框按块插入,然后打印出图。

6.对于有名对象,如视图、图层、图块、线型、文字样式、打印样式等,命名时不仅要简明,而且要遵循一定的规律,以便于查找和使用。

7.将一些常用设置,如图层、标注样式、文字样式、栅格捕捉等内容设置在一图形模板文件中(即另存为*.DWF文件),以后绘制新图时,可在创建新图形向导中单击"使用模板"来打开它,并开始绘图。

二、选用合适的命令用户能够驾驭AutoCAD,是通过向它发出一系列的命令实现的。

AutoCAD接到命令后,会立即执行该命令并完成其相应的功能。

在具体操作过程中,尽管可有多种途径能够达到同样的目的,但如果命令选用得当,则会明显减少操作步骤,提高绘图效率。

下面仅列举了几个较典型的案例。

1.生成直线或线段(1)在AutoCAD中,使用LINE、XLINE、RAY、PLINE、MLINE命令均可生成直线或线段,但唯有LINE命令使用的频率最高,也最为灵活。

(2)为保证物体三视图之间"长对正、宽相等、高平齐"的对应关系,应选用XLINE和RAY命令绘出若干条辅助线,然后再用TRIM剪截掉多余的部分。

(3)欲快速生成一条封闭的填充边界,或想构造一个面域,则应选用PLINE命令。

C语言图形化编程基础入门

C语言图形化编程基础入门

二、C 的图形模式编程2.1图形编程基础VC+EasyX 库里提供了图形函数就可以在VC 环境下进行图形编程。

对图形函数的操作都是在视口(Viewport )上进行。

用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。

视口是在图形屏幕状态下的概念,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。

然而现在,其含义拓宽为指图形显示器上的最小可访问点)。

文本与图形都可以在视口上显示。

图形视口的左上角坐标为(0,0)。

例如:分辨率为640*480的视口像素点的定位显示器在图形模式下工作时,显示的单位是像素点,通过控制各像素点的颜色和灰度等级来形成图形。

因此绘图的第一步是进行图形模式的初始化,系统进入绘图模式。

(1) initgraph() 图形初始化函数用法: HWND initgraph(int width,int height,int flag = NULL);示例:以下局部代码创建一个尺寸为 640x480 的绘图环境:initgraph(640, 480);例2-1:调用initgraph()设置640*480的图形模式,在屏幕中央显示如下的图形。

参考代码:#include<graphics.h>#include <conio.h>int main(){initgraph(640, 480);line(200, 240, 440, 240);line(320, 120, 320, 360);getch();(closegraph();return 0;}[学习单步执行]试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了):1. 将VC取消最大化,并缩小窗口,能看到代码就行。

2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。

3. 当箭头指向initgraph()语句时,按F10,能看到窗口发生了变化。

C语言画图及小动画制作(graphisc.h函数入门)

C语言画图及小动画制作(graphisc.h函数入门)
share your knowledge with the world
C 语言 graphics.h 的使用
写此教程的目的是为了给 Sarah 一点小小的入门砖。本人非牛,出错在所 难免。敬请原谅。
我的联系方式:qq:617251408
博客:/gracefulphoenix 学了这么长时间的 C 语言,总不能还停留在对话框上。因此想着弄点图形出来。而 C 语言下有个 graphics.h 这个函数,就是干这事的。我们一起探索一下。 然而,毕竟是 DOS 时代的产物,VC 是不支持此图形库的。因此我们要用 TC 去编译。到 网上去下载一个 win-tc2.0,我们开始我们的旅程。 打开 win-tc 的界面:
pattern,int width);
说明: 参数 style 为线型取值,也可以用相应名称表示,如表 1-10 中所示。
参数 pattern 用于自定义线图样,它是 16 位(bit)字,只有当 style=USERBIT_LINE(值
为 1)时,pattern 的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显
int main(void) {
initgr(); /* BGI 初始化 */
/*****此部分添加你自己的代码,例如 line(25, 25, 220, 220);
share your knowledge with the world
circle(100, 100, 50); 等等*****/ line(20,20,300,300); getch(); /* 暂停一下,看看前面绘图代码的运行结果 */ closegr(); /* 恢复 TEXT 屏幕模式 */ return 0; }
名称
取值

用C语言实现画图程序

用C语言实现画图程序

一、选题背景:画图程序,通过画图中的功能绘制出美丽的图案。

二、设计思想:利用数学三角函数制作山峰和花朵出一条曲线、用画圆函数绘制太阳的形状、再进行颜色填充用绘制直线的函数来绘制比较粗的光线、用矩形函数画出矩形的边框、再画地球、直线画赤道、弧线画南北极和钟表的刻度盘。

三、流程图:四、程序清单:#include"graphics.h" /*调用图形库函数*/#include"math.h" /*调用数学函数*/#include"stdio.h" /*调用标准I/O函数*/#define PI 3.141596 /*宏定义PI字符串*/main() /*主函数*/{float i,x,y; /*定义单精度浮点型变量i,x,y*/int gdriver=DETECT,gmode,a=1; /*定义整型变量gdriver,gmode*/initgraph(&gdriver,&gmode,"d:\\tc"); /*定义变量后,初始化图形系统*/cleardevice();setbkcolor(a); /*背景颜色*/printf("\n");printf("\n"); /*C 语言图形函数*/printf("\n");printf(" the following math functions were used in the main function.\n");printf(" setbkcolor(int color);\n"); /* 背景颜色*/printf(" setcolor(int color);\n"); /* 画笔颜色*/printf(" putpexel(x,y,color);\n"); /* 画像素点*/printf(" line(x1,y1,x2,y2)\n"); /* 直线函数*/printf(" rectangle(xl,yt,xr,yb)\n");; /* 矩形函数*/printf(" arc(x,y,as,ae,r)\n"); /* 圆弧函数*/printf(" circle(x,y,r)\n"); /*圆形函数*/printf(" ellipse(x,y,as,ae,rx,ry)\n"); /* 椭圆函数*/printf("\n"); /* 按任意键开始演示*/setcolor(2);setlinestyle(0,0,3);rectangle(4,4,635,475); /*绘制矩形框*/getch();cleardevice();printf("\n"); /* 模拟手工画图*/printf("\n"); /* 函数曲线图形*/setcolor(3);setlinestyle(3,3,3);rectangle(4,4,635,475); /*绘制图纸边框*/for (i=0;i<=2*PI;i+=PI/99999){putpixel(40*i,170-21*i*sin(1.6*i),2);putpixel(40.3*i,170-22*i*sin(1.6*i),3);putpixel(40.6*i,170-23*i*sin(1.6*i),10);}for (i=0;i<=2*PI;i+=PI/99999) /*绘制花朵*/{putpixel(118-15*cos(4*i)*cos(i),160-15*cos(4*i)*sin(i),14);putpixel(118-25*cos(4*i)*cos(i),160-25*cos(4*i)*sin(i),13);putpixel(118-35*cos(4*i)*cos(i),160-35*cos(4*i)*sin(i),10);}for (i=0;i<=PI;i+=PI/99999){putpixel(320-315*cos(i),360-95*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-96*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-97*sin(i),11); /*绘制拱桥*/ }for (a=70;a<=570;a+=50)for (i=0;i<=PI;i+=PI/9999){putpixel(a-25*cos(i),360-40*sin(i),11); /*绘制桥*/}}for (x=0;x<=640;x+=0.001){putpixel(8*x,380-8*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=600;x+=0.001){putpixel(10*x,405-10*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=560;x+=0.001){putpixel(12*x,430-12*sin(x),9); /*绘制曲线水流*/}for(x=60;x<=80;x+=0.01){ellipse(270,360,180 ,0,160-x,25);}for (x=0;x<=520;x+=0.001){putpixel(8*x,455-8*sin(x),9); /*绘制曲线水流*/}setlinestyle(0,0,1);setfillstyle(1,12);fillellipse(320,60,25,25); /*绘制太阳*/for (x=280;x>=250;x-=0.0001)putpixel(x,60,12); /*绘制阳光线*/}for (x=360;x>=390;x+=0.0001){putpixel(x,60,12); /*绘制阳光线*/}for (y=24;y>=12;y-=0.0001){putpixel(320,y,12); /*绘制阳光线*/}for (y=96;y<=108;y+=0.0001){putpixel(320,y,12); /*绘制阳光线*/}setlinestyle(3,0,1);setcolor(12);for (i=0;i<=2*PI;i+=PI/12) /*绘制阳光线*/{line(320+40*cos(i),60-36*sin(i),320+70*cos(i),60-48*sin(i)); for (x=0;x<=55555;x+=0.1){y=y+x; /*延时控制*/}}setcolor(13);setlinestyle(0,0,1);rectangle(460,100,620,200); /*绘制地图框(矩形)*/ setcolor(11);setlinestyle(0,0,3);ellipse(540,150,0,360,77,48); /*绘制地球(椭圆)*/circle(540,150,46); /*绘制经线(圆形)*/ellipse(540,100,210,330,45,16); /*绘制北极圈(椭圆弧)*/ellipse(540,200,30,150,45,16); /*绘制南极圈(椭圆弧)*/setcolor(14);setlinestyle(3,0,1);line(460,150,620,150); /*绘制赤道(水平线)*/line(540,100,540,200); /*绘制经线(垂直线)*/setcolor(11); setlinestyle(0,0,1);for (i=0;i<=2*PI;i+=PI/300){putpixel(590-35*cos(i),50-35*sin(i),11); /*绘制0.1秒刻度*/}setcolor(14);setlinestyle(0,0,1);circle(590,50,2); /*绘制中心轴*/setcolor(13);setlinestyle(0,0,3);for (i=0;i<=2*PI;i+=PI/6){line(590+25*sin(i),50-25*cos(i),590+30*sin(i),50-30*cos(i));/*绘制小时*/for (x=0;x<=5555;x+=0.001){y=y+x; /*延时控制*/}getch();closegraph(); }五、主要解决问题的方法及技术关键1、主要问题及解决方法✓抛物线的画法用插补法画抛物线。

c语言流程图怎么画

c语言流程图怎么画

c语言流程图怎么画C语言流程图怎么画。

在学习和使用C语言的过程中,经常会遇到需要画流程图的情况。

流程图是一种用图形符号表示算法思想的图示方法,能够清晰地展现程序的流程和逻辑。

因此,学会如何画C语言流程图是非常重要的。

接下来,我将向大家介绍如何画C语言流程图。

首先,我们需要明确流程图的基本符号和表示方法。

C语言流程图的基本符号包括,开始/结束、输入/输出、处理、判断、连接线等。

开始/结束用椭圆形表示,输入/输出用平行四边形表示,处理用矩形表示,判断用菱形表示,连接线用箭头线表示。

在画流程图时,需要根据程序的逻辑顺序和执行流程,合理运用这些符号进行图示。

其次,我们需要考虑如何将C语言代码转化为流程图。

对于一个C语言程序,我们可以先将其整体结构用流程图表示出来,然后再对其中的细节进行拆分和详细展示。

在画流程图时,可以按照程序的执行顺序,逐步展开,用相应的符号表示每个步骤和逻辑判断,以清晰地展现程序的执行流程和逻辑结构。

接着,我们需要注意一些常用的技巧和注意事项。

首先,要保持流程图的简洁和清晰,避免出现过于复杂和混乱的情况。

其次,要注重流程图的逻辑性和连贯性,确保每个步骤和判断都能够顺畅地连接起来,形成一个完整的流程。

此外,要合理使用注释和说明,帮助他人理解和阅读流程图。

最后,我们需要不断练习和实践,提高自己的流程图绘制能力。

通过多画一些C语言程序的流程图,不断总结经验和技巧,逐渐提高自己的绘图水平和表达能力。

同时,也可以参考一些优秀的流程图范例,学习他人的经验和技巧,不断完善自己的绘图技能。

总的来说,画C语言流程图是一项非常重要的技能,能够帮助我们更好地理解和掌握程序的执行流程和逻辑结构。

通过不断的练习和实践,相信大家一定能够掌握这项技能,画出清晰、简洁、逻辑性强的C语言流程图。

希望以上内容能够对大家有所帮助,谢谢阅读!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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. 擦掉图像循环以上即可实现动画。

相关文档
最新文档