📄 threepcircle.cs
字号:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Strategy
{
/// <summary>
/// ThreePCircle 的摘要说明。
/// </summary>
public class ThreePCircle:DrawCircle
{
private PointF m_Point1,m_Point2,m_Point3;
public PointF Point1
{
get{return m_Point1;}
set{m_Point1 = value;}
}
public PointF Point2
{
get{return m_Point2;}
set{m_Point2 = value;}
}
public PointF Point3
{
get{return m_Point3;}
set{m_Point3 = value;}
}
public PointF Center
{
get{return CircleCenter();}
}
public float Radius
{
get{
return (float)(Math.Sqrt((m_Point1.X - Center.X) * (m_Point1.X - Center.X) +
(m_Point1.X - Center.X) * (m_Point1.X - Center.X)));
}
}
//无参构造函数
public ThreePCircle()
{
}
//构造函数,用已知的三点构造圆
public ThreePCircle(PointF p1, PointF p2, PointF p3)
{
m_Point1 = p1;
m_Point2 = p2;
m_Point3 = p3;
}
private PointF CircleCenter()
{
float x0=10000;
float y0=10000;
float x1= m_Point1.X;
float y1= m_Point1.Y;
float x2= m_Point2.X;
float y2= m_Point2.Y;
float x3= m_Point3.X;
float y3 = m_Point3.Y;
float A1= x1 - x3;
float B1 = y1 - y3;
float A2 = x2 - x3;
float B2 = y2 - y3;
float C1 = (x1 * x1 - x3 * x3 + y1 * y1 - y3 * y3) / 2;
float C2 = (x2 * x2 - x3 * x3 + y2 * y2 - y3 * y3) / 2;
float D = A1 * B2 - A2 * B1;
if (D == 0)
{
MessageBox.Show("找不到圆心。");
}
else
{
x0 = (C1 * B2 - C2 * B1) / D;
y0 = (A1 * C2 - A2 * C1) / D;
}
return (new PointF(x0, y0));
}
//绘圆
public override void Draw( Graphics g)
{
g.DrawEllipse(Pens.Red, Center.X - Radius,
Center.X - Radius, Radius * 2, Radius * 2);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -