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

📄 ccreatecircle.cs

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

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

	public class CCreateCircle:ICommand
	{
		private int m_Step;
		private PointF m_Center;
		private PointF m_pCircle;
		
		public CCreateCircle()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
    
		public void LButtonDown(Graphics g,PointF aPos,ArrayList ges,ArrayList geSels)    
		{
			//记录鼠标左键的单击次数
			m_Step+=1;
			switch (m_Step) 
			{
				case 1:              //第1次单击鼠标左键
					m_Center=aPos;
					m_pCircle=aPos;
					break;
				case 2:
					//清除最后一次拖动时显示的橡皮线
					CLine tempLine=new CLine(m_Center,m_pCircle);
					tempLine.Draw(g,DrawMode.Drag);
					tempLine=null;
       
					//清除最后一次拖动时显示的橡皮圆
					CCircle tempCircle=new CCircle(m_Center,m_pCircle);
					tempCircle.Draw(g,DrawMode.Normal);
					tempCircle=null;

					//绘当前位置的圆
					CCircle newCircle=new CCircle(m_Center,aPos);
					newCircle.Draw(g,DrawMode.Normal);

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

		public void MouseMove(Graphics g,PointF aPos)
		{
			switch (m_Step) 
			{
				case 1:
					PointF prePos=new PointF();
					PointF curPos=new PointF();
					prePos=m_pCircle;
					curPos=aPos;

					//设置绘图模式
 
					//清除上一条橡皮线
					CLine tempLine1=new CLine(m_Center,prePos);
					tempLine1.Draw(g,DrawMode.Drag);
					tempLine1=null;

					//清除上一个橡皮圆
					CCircle tempCircle1=new CCircle(m_Center,prePos);
					tempCircle1.Draw(g,DrawMode.Drag);
					tempCircle1=null;

					//绘当前位置的橡皮线
					CLine tempLine2=new CLine(m_Center,curPos);
					tempLine2.Draw(g,DrawMode.Drag);
					tempLine2=null;

					//绘当前位置的橡皮圆
					CCircle tempCircle2=new CCircle(m_Center,curPos);
					tempCircle2.Draw(g,DrawMode.Drag);
					tempCircle2=null;

					m_pCircle=curPos;

					break;
			}
		}

		//单击鼠标右键时的绘图行为
		public void RButtonDown(Graphics g,PointF aPos)
		{
			if (m_Step==1) 
			{
				//清除橡皮线
				CLine tempLine=new CLine(m_Center,m_pCircle);
				tempLine.Draw(g,DrawMode.Drag);
				tempLine=null;
				//清除橡皮圆
				CCircle tempCircle=new CCircle(m_Center,m_pCircle);
				tempCircle.Draw(g,DrawMode.Drag);
				tempCircle=null;
			}
			m_Step=0;
		}

	}
}

⌨️ 快捷键说明

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