如何实现两个C语言画图同时画出来

程序是这样的:
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#include "math.h"
#define pie 3.1415926
#include<graphics.h>
void initgr(void)
{
int gd = DETECT, gm = 0;
initgraph(&gd, &gm, "");
}

void CirclePoints(int x,int y,int t,int s,int color)
{
putpixel(t+x,s+y,color);
putpixel(s+y,t+x,color);
putpixel(s-y,t+x,color);
putpixel(t-x,s+y,color);
putpixel(s+y,t-x,color);
putpixel(t+x,s-y,color);
putpixel(t-x,s-y,color);
putpixel(s-y,t-x,color);
}void MidPointCircle(int radius,int color)
{
int x,y,d,deltaE,deltaSE;
x=0;
y=radius;
d=5-4*radius;
deltaE=12;
deltaSE=20-8*radius;
CirclePoints(x,y,300,220,color);
while(y>x)
{
if(d<=0)
{d+=deltaE;
deltaSE+=8;}
else
{
d+=deltaSE;
deltaSE+=16;
y--;
}
deltaE+=8;
x++;
CirclePoints(x,y,300,220,color);
}
outtextxy(300,250,"center");
}
/*************midcircle***************************/
void bezier_3(int color, double p[4][2])
{
double t,t1,t2,xt,yt;
int rate=100,x,y;
setcolor(color);
moveto(p[0][0],p[0][1]);
for (t=0;t<=1;t+=1.0/rate)
{
yt=1-t;
t1=yt*yt;
t2=3*yt*t;
xt=p[0][0]*t1*yt+p[1][0]*t2*yt+p[2][0]*t2*t+p[3][0]*t*t*t;
yt=p[0][1]*yt*t1+p[1][1]*t2*yt+p[2][1]*t2*t+p[3][1]*t*t*t;
x=(int)(xt);
y=(int)(yt);
lineto(x,y);
}
}
void main(void)
{

static double p[4][2]={280,200,250,50,350,50,320,200};/*frist from left,second from head*/
const NO=3;
int i;
int driver=DETECT,mode;/* 初始化图形模式*/
initgraph(&driver,&mode,"C:\\tools\tc2.0");
cleardevice();
setcolor(BLUE);
moveto(p[0][0],p[0][1]); /*ku han shu*/
for (i=1;i<=NO;i++)
lineto(p[i][0],p[i][1]);/*foint line*/
bezier_3(LIGHTRED,p); /*bulid bezier */
getch();
initgr();
MidPointCircle(28,150);
getch();
closegraph();
/*closegr();*/
/*return ;*/ /***************zhongxinyuan***********/

}
如何才能叫他同时画出来一个圆和一个花瓣?
高手帮忙!!

第1个回答  2008-12-15
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#include "math.h"
#define pie 3.1415926
#include<graphics.h>
void initgr(void)
{
int gd = DETECT, gm = 0;
initgraph(&gd, &gm, "");
}

void CirclePoints(int x,int y,int t,int s,int color)
{
putpixel(t+x,s+y,color);
putpixel(s+y,t+x,color);
putpixel(s-y,t+x,color);
putpixel(t-x,s+y,color);
putpixel(s+y,t-x,color);
putpixel(t+x,s-y,color);
putpixel(t-x,s-y,color);
putpixel(s-y,t-x,color);
}void MidPointCircle(int radius,int color)
{
int x,y,d,deltaE,deltaSE;
x=0;
y=radius;
d=5-4*radius;
deltaE=12;
deltaSE=20-8*radius;
CirclePoints(x,y,300,220,color);
while(y>x)
{
if(d<=0)
{d+=deltaE;
deltaSE+=8;}
else
{
d+=deltaSE;
deltaSE+=16;
y--;
}
deltaE+=8;
x++;
CirclePoints(x,y,300,220,color);
}
outtextxy(300,250,"center");
}
/*************midcircle***************************/
void bezier_3(int color, double p[4][2])
{
double t,t1,t2,xt,yt;
int rate=100,x,y;
setcolor(color);
moveto(p[0][0],p[0][1]);
for (t=0;t<=1;t+=1.0/rate)
{
yt=1-t;
t1=yt*yt;
t2=3*yt*t;
xt=p[0][0]*t1*yt+p[1][0]*t2*yt+p[2][0]*t2*t+p[3][0]*t*t*t;
yt=p[0][1]*yt*t1+p[1][1]*t2*yt+p[2][1]*t2*t+p[3][1]*t*t*t;
x=(int)(xt);
y=(int)(yt);
lineto(x,y);
}
}
void main(void)
{

static double p[4][2]={280,200,250,50,350,50,320,200};/*frist from left,second from head*/
const NO=3;
int i;
int driver=DETECT,mode;/* 初始化图形模式*/
initgraph(&driver,&mode,"C:\\tools\tc2.0");
cleardevice();
setcolor(BLUE);
moveto(p[0][0],p[0][1]); /*ku han shu*/
for (i=1;i<=NO;i++)
lineto(p[i][0],p[i][1]);/*foint line*/
bezier_3(LIGHTRED,p); /*bulid bezier */

/**********************************************/
/*getch();*/
/*initgr();*/
/**********************************************/

MidPointCircle(28,150);
getch();
closegraph();
/*closegr();*/
/*return ;*/ /***************zhongxinyuan***********/

}

在两行星号中是我将你的代码圈了不要的。。。不知道现在的结果是不是你想要的?
第2个回答  2008-12-15
他同时画出来一个圆和一个花瓣?
如果你是要的绝对效果,那是做不到的。
可以两个图画你一点,我一点画,这样己是同时的极点
如不是,机算机处理速度这么快,先画哪样你都以为是同时画的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网