在项目中有一次需要画一段弧线, 但是DrawArc方法在WinCE的CF框架下不存在, 只能在Windows下使用. 于是到网上找到了一个方法:
private Point[] CreateArc(float StartAngle, float SweepAngle, int PointsInArc, int Radius, int xOffset, int yOffset, int LineWidth)
{
if (PointsInArc < 0)
PointsInArc = 0;
if (PointsInArc > 360)
PointsInArc = 360;
Point[] points = new Point[PointsInArc * 2];
int xo;
int yo;
int xi;
int yi;
float degs;
double rads;
for (int p = 0; p < PointsInArc; p++)
{
degs = StartAngle + ((SweepAngle / PointsInArc) * p);
rads = (degs * (Math.PI / 180));
xo = (int)(Radius * Math.Sin(rads));
yo = (int)(Radius * Math.Cos(rads));
xi = (int)((Radius - LineWidth) * Math.Sin(rads));
yi = (int)((Radius - LineWidth) * Math.Cos(rads));
xo += (Radius + xOffset);
yo = Radius - yo + yOffset;
xi += (Radius + xOffset);
yi = Radius - yi + yOffset;
points[p] = new Point(xo, yo);
points[(PointsInArc * 2) - (p + 1)] = new Point(xi, yi);
}
return points;
}
如:
Point[] pts = CreateArc(270, 90, 100, 20, 50, 50, 2);
Pen pen = new Pen(Color.FromArgb(255, 0, 0), 2);
e.Graphics.DrawPolygon(pen, pts);
pen.Dispose();
资料来源: http://stackoverflow.com/questions/12145260/how-to-draw-partial-ellipse-in-cf-graphics-drawarc-in-full-framework
可能需要科学上网才能看到O(∩_∩)O~