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

📄 ccreatearc.cs

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

namespace VCSharp
{
	/// <summary>
	/// CCreateArc 的摘要说明。
	/// </summary>
	/// 

	public class CCreateArc:ICommand
	{
		private int m_Step;
		private PointF m_Center;
		private PointF m_Begin;
		private PointF m_End;
    
		public CCreateArc()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}


		public void LButtonDown(Graphics g,PointF aPos,ArrayList ges,ArrayList geSels)
		{
			//记录鼠标左键的单击次数
			m_Step+=1;
			switch (m_Step) 
			{
				case 1:               //第1次单击鼠标左键
					m_Center=aPos;
					break;
				case 2:
					m_Begin=aPos;
					m_End=aPos;
					CArc tempArc1=new CArc(m_Center, aPos, aPos);
					tempArc1.Draw(g, DrawMode.Drag);
					tempArc1 =null;
					break;
				case 3:
					//清除最后一次拖动时圆心到起点的橡皮线
					CLine tempLine1=new CLine(m_Center,m_Begin);
					tempLine1.Draw(g,DrawMode.Drag);
					tempLine1=null;
       
					//清除最后一次拖动时圆心到终点的橡皮线
					CLine tempLine2=new CLine(m_Center,m_End);
					tempLine2.Draw(g,DrawMode.Drag);
					tempLine2=null;

					//清除最后一次拖动时显示的橡皮弧
					CArc tempArc=new CArc(m_Center,m_Begin,m_End);
					tempArc.Draw(g,DrawMode.Drag );
					tempArc=null;

					//绘当前位置的圆弧
					CArc newArc=new CArc(m_Center,m_Begin,aPos);
					newArc.Draw(g,DrawMode.Normal);

					ges.Add(newArc);
       
					m_Step=0;
					break;
			}
		}

		public void MouseMove(Graphics g,PointF aPos)
		{
			switch (m_Step) 
			{
				case 2:
					PointF prePos=new PointF();
					PointF curPos=new PointF();
					prePos=m_End;
					curPos=aPos;
   
					//清除上一条圆心到终点的橡皮线
					CLine tempLine1=new CLine(m_Center,prePos);
					tempLine1.Draw(g,DrawMode.Drag);
					tempLine1=null;

					//清除上一条橡皮弧
					CArc tempArc1=new CArc(m_Center,m_Begin,prePos);
					tempArc1.Draw(g,DrawMode.Drag);
					tempArc1=null;

					//绘当前圆心到终点的橡皮线
					CLine tempLine2=new CLine(m_Center,curPos);
					tempLine2.Draw(g,DrawMode.Drag);
					tempLine2=null;

					//绘当前位置的橡皮弧
					CArc tempArc2=new CArc(m_Center, m_Begin, curPos);
					tempArc2.Draw(g, DrawMode.Drag);
					tempArc2 = null;

					m_End=curPos;
					break;

			}
		}

    
		//单击鼠标右键时的绘图行为
		public void RButtonDown(Graphics g,PointF aPos)
		{
			if (m_Step==2) 
			{
				//清除圆心到起点的橡皮线
				CLine tempLine1=new CLine(m_Center,m_Begin);
				tempLine1.Draw(g,DrawMode.Drag);
				tempLine1=null;

				//清除圆心到终点的橡皮线
				CLine tempLine2=new CLine(m_Center,m_End);
				tempLine2.Draw(g,DrawMode.Drag);
				tempLine2=null;

				//清除橡皮弧
				CArc tempArc=new CArc(m_Center,m_Center,m_End);
				tempArc.Draw(g,DrawMode.Drag);
				tempArc=null;
			}

			m_Step=0;
		}

	}
}

⌨️ 快捷键说明

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