当前位置:编程学习 > C/C++ >>

如何用C语言画基本图形

用C语言去画一下基本的图形,比如直线,点,最好还能教一点关于动态和3D图形的画法
补充:大概就是要用C画图时经常用到的是哪些库函数,哪些语句
追问:我的目的就是想学好C啊,呵呵
答案:
画出一个图形
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
main()
{
int driver=VGA,mode=VGAHI;
int i,num=15,top=50;
int left=20,right=50;
initgraph(&driver,&mode,"");
for(i=0;i<num;i++)
{
ellipse(250,250,0,360,right,left);
ellipse(250,250,0,360,20,top);
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
right+=5;
left+=5;
top+=10;
}
getch();
}
画椭圆
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
main()
{
int x=260,y=160,driver=VGA,mode=VGAHI;
int num=20,i;
int top,bottom;
initgraph(&driver,&mode,"");
top=y-30;
bottom=y-30;
for(i=0;i<num;i++)
{
ellipse(x,250,0,360,top,bottom);
top-=5;
bottom+=5;
}
getch();
}
画点
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
main()
{
int i,j,driver=VGA,mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=50;i<=230;i+=20)
for(j=50;j<=230;j++)
putpixel(i,j,1);
for(j=50;j<=230;j+=20)
for(i=50;i<=230;i++)
putpixel(i,j,1);
getch();
}
他们都有相应的函数的
我先给个例子,#include <graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include "conio.h"
#include"math.h"

void main()
{
int gdriver=DETECT,gmode; /*图形模式设定*/
char f;
int m,n,x,y,t;
int color;
x=320;y=240;
m=0;n=0;
initgraph(&gdriver,&gmode,"c: \\tc");
printf("qweadzxc stand for eight direction,p to exit,and the number stand for color when paint\n");
printf("input anykey to start\n");
getch();
printf("PLEASE INPUT THE COLOR\n");
scanf("%d",&color);
loop:
while(!kbhit())
{
putpixel(x,y,color);
x=x+m;y=y+n;
for(t=0;t<=50;t++)
delay(100);
}
f=getch();
if(f=='w'||f=='W')
{
m=0;n=-1;
goto loop;
}
if(f=='x'||f=='X')
{
m=0;n=1;
goto loop;
}
if(f=='a'||f=='A')
{
m=-1;n=0;
goto loop;
}
if(f=='d'||f=='D')
{
m=1;n=0;
goto loop;
}
if(f=='q'||f=='Q')
{
m=-1;n=-1;
goto loop;
}
if(f=='e'||f=='E')
{
m=1;n=-1;
goto loop;
}
if(f=='z'||f=='Z')
{
m=-1;n=1;
goto loop;
}
if(f=='c'||f=='C')
{
m=1;n=1;
goto loop;
}
if(f==' ')
{
m=0;n=0;
getch();
goto loop;
}
if(f=='p'||f=='P')
goto end;
if(f=='s'||f=='S')
{
printf("please input the color you want to set\n");
scanf("%d",&color);
goto loop;
}
else
{
printf("ERROR!\n");
goto loop;
}
end:
getch();
closegraph(); /*退出图形模式*/
}
下面举一个用drawpoly()函数画箭头的例子。#include
#include
int main()
{
int gdriver, gmode, i;  
int arw[16]={200,102,300,102,300,107,330,
100,300,93,300,98,200,98,200,102};
gdriver=DETECT;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(12); /*设置作图颜色*/
drawpoly(8, arw); /*画一箭头*/
getch();
closegraph();
return 0;
}
设定线型函数
  在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。
void far setlinestyle(intlinestyle,unsigned upattern,int thickness); 该函数用来设置线的有关信息,其中linestyle是线形状的规定,
见下表:
有关线的形状(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义
─────────────────────────
SOLID_LINE 0 实线
DOTTED_LINE 1 点线
CENTER_LINE 2 中心线
DASHED_LINE 3 点画线
USERBIT_LINE 4 用户定义线
━━━━━━━━━━━━━━━━━━━━━━━━━
有关线宽(thickness)
thickness是线的宽度,见下表。
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义
─────────────────────────
NORM_WIDTH 1 一点宽
THIC_WIDTH 3 三点宽
━━━━━━━━━━━━━━━━━━━━━━━━━
  对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:
 struct linesettingstype
 {
 int linestyle;
 unsigned upattern;
 int thickness;
 }
1.想用c来画图,要看你是用什么库。学校学习图形学比较常用的可能是turbo c里的图形库,以及可能应用更为广泛的openGL、GDI、openCV等。其中openGL和directX可以用来做游戏,当然也可以绘制三维图形、动画以及二维的图像、动画。  2.如果是想在turbo c中画,那么tc里自带有一个graphics.h的图形库。具体例子可以参考 無影浪客 所给的。『魏』典韦 的例子也是基于这个库的。因为turbo c比较古老了,所以参考书目可能不容易找到,可以上图书馆看看或者上网找找。  3.一般学习三维图形绘制主要是学openGL,因为相对简单。通过搭配glut库可以很容易的就搭建出绘制框架(几十行代码即可)。相关的教程可以参考OpenGL编程指南(也称红宝书),或者NeHe的网上教程(第一个链接是中文版,第二个英文版的每个教程后面都提供有代码下载): http://www.owlei.com/DancingWind/ http://nehe.gamedev.net/
那你不如去学OPENGL开发语言,更简单

上一个:怎样用C语言画圆?
下一个:谁有谭浩强C语言视频教程??

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,