怎么在Image上画圆?

时间:2022-01-12 04:57:48
我找到一个例子,
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的圆。

#3


Image1->Canvas->Ellipse(0,0,100,100);
Image1->Invalidate();

#4


我要的是一个空心圆,因为还有底图在Image控件中,如果是Canvas->Ellipse(10, 10, 110, 110);则这个圆会覆盖底图.而不是由线条组成的圆.就象我上面找的那个例子,线条坐标都是计算的.

#5


画圆前设置透明:

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的圆。

#3


Image1->Canvas->Ellipse(0,0,100,100);
Image1->Invalidate();

#4


我要的是一个空心圆,因为还有底图在Image控件中,如果是Canvas->Ellipse(10, 10, 110, 110);则这个圆会覆盖底图.而不是由线条组成的圆.就象我上面找的那个例子,线条坐标都是计算的.

#5


画圆前设置透明:

Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Ellipse(10, 10, 110, 110);

#6


谢谢,ccrun(老妖)(www.ccrun.com) ,问题已解决!