五角星的画法

来源:互联网 发布:淘宝乡亲大药房卖假药 编辑:程序博客网 时间:2024/03/29 19:32

绘制五角星作为GDI+画图的一个示例

这是从网上找的比较简单的方法

http://topic.csdn.net/t/20031128/09/2503872.html

http://it.china-b.com/cxsj/VBNET/20090608/55423_1.html

 void   MyDraw(Graphics   g,Point   center,int   radius){
    Point[]   pts   =   new   Point[5];
    //获取五角星5个顶点
    pts[0]   =   new   Point(center.X,center.Y   -   radius);
    pts[1]   =   Rotate72(pts[0],center);
    pts[2]   =   Rotate72(pts[1],center);
    pts[3]   =   Rotate72(pts[2],center);
    pts[4]   =   Rotate72(pts[3],center); 

    //简单地拉5条线
    Pen   pen   =   new   Pen(new   SolidBrush(Color.Blue)); 
    g.DrawPolygon(....); //空心

    g.FillPolygon(....); //实心
}
//旋转72
private   Point   Rotate72(Point   pt,Point   center){
    int   x   =   (int)(center.X   +   (pt.X   -   center.X)   *   Math.Cos(72.0   *   Math.PI/180)   -   (pt.Y   -   center.Y)   *   Math.Sin(72.0   *   Math.PI/180)),
            y   =   (int)(center.Y   +   (pt.X   -   center.X)   *   Math.Sin(72.0   *   Math.PI/180)   +   (pt.Y   -   center.Y)   *   Math.Cos(72.0   *   Math.PI/180));
        return   new   Point(x,y);  
}

//计算内五边形画空心五角星

今天画五角星的时候,发现老是出现交叉线,无法画空心的,

找了半天没发现好用的方法,只好自己画几何图形求解了。

以下是数学公式

a/R=sin72;

y/R=cos72;

x/c=sin36;

y/c=con36;

 

可以求了正五角形的第一个角点,再旋转72度,可以求出其它几个角点;

然后将这十个点合理排序就是要画的正五角形。

 

      这里的旋转方法是画图的关键,其实这里的用的GDI+功能却不多,不过在gis中被要求画个五角星之类复杂图形却很常见,想想当年三角函数那块,现在终于用上了。