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语言图形程序设计基础
驱动程序 (driver)
EGA
VGA
图形(gmode)
EGAHI EGALO VGALO VGAMED VGAHI
等价值
0 1 0 1 2
分辨(dpi)
640X200 640X350 640X200 640X350 640X480
注:1. 不同的图形驱动程序有不同的图形模式;
2. 同一图形驱动程序,也可能会有几种图形 模式;
2020/1/5
西安工程大学数学系
11
C语言图形程序设计基础
3.1.3、图形系统初始化和模式控制
TurboC提供了十分丰富的图形库函数,共有70多个, 所有图形函数的原型均在头文件“graphics.h”中定义。 所以,在任何使用图形函数的程序中,都要求其头部 包含文件graphics.h,即在程序文件的开头写上文件 包含命令:
例如:CGA显示器的分辨率为300X200,TVG显 示器的分辨率为1024X768, TVGA比CGA分率高。
在图形模式下,屏幕上每个像素的显示位置用点 坐标来描述的。点坐标系是以屏幕左上角为坐标原点 (0,0),水平方向为X轴,自左向右;垂直方向为 Y轴,自上向下。如下图所示:
(0,0)
驱动程序 (driver) 图形(gmode) CGAC0
CGA
CGAC1
CGAC2
CGAC3
CGAHI
等价值
0 1 2 3 4
分辨(dpi)
320X200 320X200 320X200 320X200 640X200
表2.2 图形驱动程序及相应的模式
2020/1/5
西安工程大学数学系
10
C语言图形程序设计基础
return(0);
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语言中通过控制台绘制基本的图形和实现简单的交互效果。
一、基本概念在开始编写控制台图形化程序之前,我们需要了解一些基本概念。
首先是像素和字符的概念,控制台上的每个字符都可以看作一个像素,可以通过改变字符的颜色来实现绘图效果。
其次是控制台的坐标系,通常以左上角为原点,向右为X轴正方向,向下为Y轴正方向。
二、绘制基本图形1. 绘制点在控制台中绘制点可以通过改变字符的颜色实现,可以使用Windows API函数SetConsoleTextAttribute来设置字符的颜色。
例如,下面代码可以绘制一个红色的点:```c#include <windows.h>#include <stdio.h>void gotoxy(int x, int y) {COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}void setcolor(int color) {HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hConsole, color);}int main() {int x = 10, y = 5;gotoxy(x, y);setcolor(FOREGROUND_RED);printf("*");return 0;}```2. 绘制线段要在控制台中实现绘制线段的效果,我们可以利用字符的重复打印来模拟直线的效果。
例如,下面代码可以绘制一条水平线段:```c#include <stdio.h>void setcolor(int color) {printf("\033[1;%dm", color);}int main() {int x1 = 10, x2 = 20, y = 5;setcolor(31); // 设置为红色for (int i = x1; i <= x2; i++) {printf("*");}return 0;}```3. 绘制矩形要在控制台中绘制矩形,可以利用循环来控制每行的输出。
C语言画图函数
C语言画图函数与图形有关的函数GRAPHICS.H 库文件bar【功能】画出一条栏目。
【原型】void far bar(int left,int top,int right,int bottom)【位置】graphics.hgraphics.h【参见】bar3d,setfillstyle,rectanglebar3d【功能】画出一条3-D栏目。
【原型】void far bar3d(int left,int top,int right,int bottom,int depth,int topflag) 【位置】graphics.h【参见】barcircle【功能】以(x,y)为圆心按照指定的半径画出一个圆。
【原型】void far circle(int x,int y,int radius)【位置】graphics.h【参见】arccleardevice【功能】清除图形画面。
【原型】void far cleardevice(void)【位置】graphics.h【参见】clearviewportclearviewport【功能】清除当前可视区域。
【原型】clearviewport(void)【位置】graphics.h【参见】setviewport,cleardeviceclosegraph【功能】关闭图形系统。
【原型】void far closegraph(void)【位置】graphics.h【参见】initgraphdetecgraph【功能】通过检查硬件确定使用的图形驱动程序和模式。
【原型】void far detectgraph(int far *graphdriver,int far *graphmode)【位置】graphics.h【参见】initgraph,graphresultdrawpoly【功能】画出一个多边形的轮廓。
【原型】void far drawpoly(int numpoints,int far polypoints[])【位置】graphics.h【说明】polypoints中包括一共numpoints对数值。
C语言绘图知识
第五章图形显示及计算机绘图5.1 C语言图形函数及其用法TurboC 2.0具有70多个图形库函数,其图形功能极为丰富,而且用TurboC 2.0编写和通过的程序,可以不作修改或只做很少的修改,便可以在TurboC ++或Borland C++的环境下编译运行,所以TurboC 是一种很好的图形设计语言。
在这一节只介绍其中最常用的一部分,其余的图形函数及用法简介可参阅其它参考书。
所有这些图形函数均在头文件“graphics.h”中定义,所以,凡是在程序中要调用这些图形函数,都必须在程序文件的开头写上文件包含命令:#include<graphics.h>5.2图形系统管理在一般缺省情况下,屏幕为80列、25行的文本方式。
在文本方式下,所有的图形函数均不能操作,因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为一种图形模式,这就是通常所说的“图形方式初始化”。
在绘图工作完毕之后,又要使屏幕回到文本方式,以便进行程序文件等的编辑工作。
TurboC 2.0提供了14个函数,来进行对图形系统的控制和管理工作。
5.2.1图形方式初始化图形方式初始化是通过函数initgraph来完成的。
其调用格式为:initgraph(*gdriver,*gmode,*path);函数initgraph的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形方式。
调用该函数须用三个参数,其含义为:①gdriver:是一个整型值,用来指定要装入的图形驱动程序,该值在头文件graphics.h 中定义,见表5.1。
除DETECT外,表中每一个量均对应于一种图形驱动程序。
如果使用DETECT,则由系统自动检测图形适配器的最高分辨率模式,并装入相应的图形驱动程序。
②gmode:是一个整型值,用来设置图形显示模式。
不同的图形驱动程序有不同的图形显示模式,即使是在同一个图形驱动程序下,也可能会有几种图形显示模式。
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语言中的画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。
本节对这些函数作一全面的介绍。
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语言绘图
符号名 数值 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封顶。(线型、颜 色、填充方式按当前设置)
c语言流程图怎么画
c语言流程图怎么画C语言是一种结构化编程语言,流程图是在程序中描述算法或流程的图形化工具。
C语言流程图是使用一组特定的符号和线条表示程序中的顺序、条件和循环结构。
以下是一篇关于如何画C语言流程图的文章,共计700字。
画C语言流程图并不是一项复杂的任务,它只需要遵循特定的规则和使用正确的符号。
以下是一些画C语言流程图的步骤和示例。
第一步是确定程序中的开始和结束点。
流程图应以一个开始符号(通常是一个圆形或椭圆形)开始,并以一个结束符号(通常是一个圆角矩形)结束。
在开始符号内部,用文字标明程序的名称或简要描述。
接下来,确定程序中的过程和判断点。
过程是指一系列指令或语句的集合,例如函数或子程序。
判断点是指需要根据特定条件来决定执行哪些语句或指令的地方,例如if语句或循环语句。
在流程图中,用矩形表示过程,并用菱形表示判断点。
在矩形中写下过程的名称或简要描述,在菱形中写下判断条件。
还可以使用箭头表示程序中的流程方向。
箭头从一个符号指向另一个符号,表示程序执行的流程方向。
通常,箭头从开始符号开始,按照程序的逻辑顺序依次指向其他符号,最终指向结束符号。
在流程图中,还可以使用特殊的符号表示程序中的输入和输出。
用梯形表示输入,用平行四边形表示输出。
在这些符号中写下相应的变量或数据的名称。
最后,根据具体的程序逻辑,使用连接线连接各个符号。
连接线用来表示程序执行中的数据流向。
连接线应遵循程序的逻辑顺序,并确保数据的正确流向。
下面是一个简单的C语言流程图示例:开始|V输入数值|V判断数值是否大于0|V是|V输出"数值大于0"|V否|V输出"数值小于等于0"|V结束在这个例子中,程序首先接收用户输入的数值,然后判断这个数值是否大于0。
如果大于0,则输出"数值大于0",否则输出"数值小于等于0"。
最后,程序结束。
通过上述步骤,您可以画出一个简单的C语言流程图。
c语言程序流程图符号及绘制方法
c语言程序流程图符号及绘制方法Flowchart symbols in C programming include start/end symbol, input/output symbol, process symbol, decision symbol, and connector symbol. These symbols are used to represent different elements in a C program and to illustrate the flow of the program. The start/end symbol is represented by an oval shape with the word "Start" or "End" inside it. This symbol marks the beginning and end of the program. The input/output symbol is represented by a parallelogram shape with the words "Input" or "Output" inside it. This symbol indicates the input or output of data in the program. The process symbol is represented by a rectangle shape with a description of the process inside it. This symbol represents the various calculations and operations performed in the program.在C语言编程中,流程图符号包括开始和结束符号、输入/输出符号、处理符号、决策符号和连接符号。
如何利用C语言进行图形化编程
如何利用C语言进行图形化编程在计算机编程领域,图形化编程一直是一个备受关注的话题。
图形化编程可以使程序更加直观、易于理解,同时也能提升用户体验。
虽然C语言是一种被广泛应用的编程语言,但是它本身并不擅长处理图形化界面。
然而,我们可以通过一些技巧和工具来利用C语言进行图形化编程。
一、使用图形库在C语言中,我们可以使用图形库来实现图形化编程。
图形库是一种提供了绘制图形和处理图形界面的工具集。
其中,最常用的图形库是OpenGL和SDL。
OpenGL是一个跨平台的图形库,它可以在多个操作系统上运行,并且支持3D图形的绘制。
而SDL是一个简单易用的图形库,它专注于2D图形的绘制和处理。
通过使用这些图形库,我们可以在C语言中轻松实现图形化界面的编程。
二、学习GUI框架除了使用图形库,我们还可以学习和使用GUI(图形用户界面)框架来进行图形化编程。
GUI框架是一种提供了一系列图形化界面组件和工具的软件库。
在C 语言中,常用的GUI框架有GTK+和Qt。
GTK+是一个开源的GUI框架,它提供了一套丰富的界面组件和事件处理机制,可以用于创建跨平台的图形化应用程序。
而Qt是一个跨平台的GUI框架,它提供了一套完整的界面组件和工具,可以用于创建高度可定制的图形化应用程序。
通过学习和使用这些GUI框架,我们可以在C语言中实现复杂的图形化界面。
三、结合其他编程语言除了使用C语言本身的特性和工具,我们还可以结合其他编程语言来进行图形化编程。
例如,我们可以使用C语言与Python进行集成,利用Python的图形化编程库来实现图形化界面。
Python拥有丰富的图形化编程库,如Tkinter和PyQt,它们提供了一系列易用的界面组件和工具。
通过使用C语言与Python的结合,我们可以充分发挥C语言的计算性能,同时又能利用Python的图形化编程库来实现图形化界面。
四、自定义图形化库如果我们对现有的图形库和GUI框架不满意,我们还可以自己开发一个图形化库。
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画图最快的方法公司标准化编码 [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语言绘制直角坐标系及余弦函数的详细程序[原创] //目标:在屏幕上用"*"绘制余弦函数cos(x)曲线#include <math.h>#include <stdio.h>#define PI 3.1415#define X_RADIAN(degree) PI*degree/180 //角度转弧度公式#define STEP_Y 0.1 //窗口中y轴方向步长#define STEP_X 10 //窗口中x轴方向步长#define PIXEL_X 70 //直角坐标系中x轴点数#define PIXEL_Y 24 //直角坐标系中y轴点数#define O_X PIXEL_X/2 //直角坐标系中原点(O_X,O_Y)#define O_Y PIXEL_Y/2#define O_X_IN_WIN 0 //窗口中原点(O_X_IN_WIN,O_Y_IN_WIN)#define O_Y_IN_WIN 0#define BOUNDARY_X_L 20 //窗口中x轴负半轴点数#define BOUNDARY_X_R 30 //窗口中x轴正半轴点数#define BOUNDARY_Y_U 10 //窗口中y轴正半轴点数Created by QXY#define BOUNDARY_Y_N 10 //窗口中y轴负半轴点数char check_window_legality(void) //检查窗口的合法性,若窗口比坐标系还大,则error{char rt = 0;if((BOUNDARY_X_L > O_X) || (BOUNDARY_X_R > O_X) || (BOUNDARY_Y_N > O_Y) || (BOUNDARY_Y_U > O_Y)) { printf("error! This window is too big .\n");} else{printf("This window is legal:\n");rt = 1;}return rt;}char dot_in_window(int x,int y) /*判断该打印点是否在画图窗口内*/{char rt = 0;if((x >= O_X - BOUNDARY_X_L)&&(x <= O_X + BOUNDARY_X_R))if((y >= O_Y - BOUNDARY_Y_N)&&(y <= O_Y + BOUNDARY_Y_U))rt = 1;Created by QXYreturn rt;}void main(){unsigned int line,column; /*此为打印页面上的行和列(line,column) <=> (x,y)*/int x_column_in_win, /*图像窗口中的x,y坐标*/y_line_in_win;float x_degree_in_win, //窗口中x轴方向每点代表的角度。
C语言画图及小动画制作(graphisc.h函数入门)
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语言实现画图程序
一、选题背景:画图程序,通过画图中的功能绘制出美丽的图案。
二、设计思想:利用数学三角函数制作山峰和花朵出一条曲线、用画圆函数绘制太阳的形状、再进行颜色填充用绘制直线的函数来绘制比较粗的光线、用矩形函数画出矩形的边框、再画地球、直线画赤道、弧线画南北极和钟表的刻度盘。
三、流程图:四、程序清单:#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、主要问题及解决方法✓抛物线的画法用插补法画抛物线。