⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccircle.cs

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 CS
字号:
using System;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace template
{
	/// <summary>
	/// CCircle 的摘要说明。
	/// </summary>
	public class CCircle:GESelecter
	{
		private PointF m_Center,m_pCircle;

		public PointF Center
		{
			get{return m_Center;}
			set{m_Center=value;}
		}

		public PointF PCircle
		{
			get{return m_pCircle;}
			set{m_pCircle=value;}
		}

		public float Radius
		{
			get
			{
				float r=DistPtoP(m_Center,m_pCircle);
				return r;
			}
		}

		public CCircle()
		{
		}
		
		public CCircle(PointF pCenter,PointF pCircle) 
		{
			m_Center=pCenter;
			m_pCircle=pCircle;
		}

		//计算点与点之间的距离
		private float DistPtoP(PointF p1,PointF p2)
		{
			float dx,dy;
			dx = p2.X - p1.X;
			dy = p2.Y - p1.Y;
			return (float)(Math.Sqrt((dx * dx) + (dy * dy)));
		}

		//绘圆
		public override void Draw(Graphics g, geDrawMode aDrawMode)
		{
			Pen pen= DrawSettings(aDrawMode);
			g.DrawEllipse(pen, m_Center.X - Radius,
				m_Center.X - Radius, Radius * 2, Radius * 2);
		}

		//拾取圆
		public override bool Pick(PointF aPos)
		{
			GraphicsPath gp=new GraphicsPath();
			gp.AddEllipse(m_Center.X - Radius, m_Center.X - Radius,
						Radius * 2, Radius * 2);
			if (gp.GetBounds().Contains(aPos))
			{
				if (gp.IsOutlineVisible(aPos, Pens.Black))
				{
					gp.Dispose();
					return true;
				}
				else
				{
					gp.Dispose();
					return false;
				}
			}
			else
			{
				gp.Dispose();
				return false;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -