double x1,y1,x2,y2;
const int nscale=100;
Canvas->Pen->Color=clYellow;//设置FORM界面的画笔颜色。
for (int i=0;i<720;i++)
{
double dAngle=i*M_PI/360;//M_PI在math.h里
double E=nscale*(1+sin(3*dAngle));
x1=320+E*cos(dAngle);
x2=320+E*cos(dAngle+M_PI/5);
y1=240+E*sin(dAngle);
y2=240+E*sin(dAngle+M_PI/5);
Canvas->MoveTo(x1,y1);//移到X1,Y2位置
Canvas->LineTo(x2,y2);
}
这个是画复杂的线条,我现在只要求画一个圆,应该怎么写?先谢了!
6 个解决方案
#1
void __fastcall Ellipse(int X1, int Y1, int X2, int Y2);
在两个点构成的矩形内画椭圆.
在两个点构成的矩形内画椭圆.
#2
同意楼上。
例如:
Canvas->Ellipse(10, 10, 110, 110);
就是从10,10开始画一个直径为100的圆。
例如:
Canvas->Ellipse(10, 10, 110, 110);
就是从10,10开始画一个直径为100的圆。
#3
Image1->Canvas->Ellipse(0,0,100,100);
Image1->Invalidate();
Image1->Invalidate();
#4
我要的是一个空心圆,因为还有底图在Image控件中,如果是Canvas->Ellipse(10, 10, 110, 110);则这个圆会覆盖底图.而不是由线条组成的圆.就象我上面找的那个例子,线条坐标都是计算的.
#5
画圆前设置透明:
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Ellipse(10, 10, 110, 110);
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Ellipse(10, 10, 110, 110);
#6
谢谢,ccrun(老妖)(www.ccrun.com) ,问题已解决!
#1
void __fastcall Ellipse(int X1, int Y1, int X2, int Y2);
在两个点构成的矩形内画椭圆.
在两个点构成的矩形内画椭圆.
#2
同意楼上。
例如:
Canvas->Ellipse(10, 10, 110, 110);
就是从10,10开始画一个直径为100的圆。
例如:
Canvas->Ellipse(10, 10, 110, 110);
就是从10,10开始画一个直径为100的圆。
#3
Image1->Canvas->Ellipse(0,0,100,100);
Image1->Invalidate();
Image1->Invalidate();
#4
我要的是一个空心圆,因为还有底图在Image控件中,如果是Canvas->Ellipse(10, 10, 110, 110);则这个圆会覆盖底图.而不是由线条组成的圆.就象我上面找的那个例子,线条坐标都是计算的.
#5
画圆前设置透明:
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Ellipse(10, 10, 110, 110);
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Ellipse(10, 10, 110, 110);
#6
谢谢,ccrun(老妖)(www.ccrun.com) ,问题已解决!