日期:2014-05-18 浏览次数:21328 次
// 画圆
private void drawCircles(Graphics g, Rectangle rect)
{
// 圆的直径等于绘图区域最短边
float diameter = Math.Min(rect.Width, rect.Height);
// 半径
float radius = diameter / 2;
// 计算圆心(其实就是绘图区域矩形中心)
PointF center = new PointF(
rect.X + rect.Width / 2,
rect.Y + rect.Height / 2
);
// 画几个圆,先试试5个
int count = 5;
float diameterStep = diameter / count;
float radiusStep = radius / count;
// 生成圆的范围
RectangleF cirleRect = new RectangleF();
cirleRect.X = center.X - radius;
cirleRect.Y = center.Y - radius;
cirleRect.Width = cirleRect.Height = diameter;
// 画同心圆
for (int i = 0; i < count; i++)
{
g.DrawEllipse(Pens.Gray, cirleRect);
cirleRect.X += radiusStep;
cirleRect.Y += radiusStep;
cirleRect.Width -= diameterStep;
cirleRect.Height -= diameterStep;
}
}
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // 图形抗锯齿
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; // 文字抗锯齿
// 提出来公用
float diameter, radius;
PointF center;
// 画圆
private void drawCircles(Graphics g, Rectangle rect)
{
// (略)
}
// 辐射线
private void drawCrosshair(Graphics g)
{
int count = 8;
if (count > 0)
{
// 计算角度