绘制五角星作为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中被要求画个五角星之类复杂图形却很常见,想想当年三角函数那块,现在终于用上了。