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

📄 ccreaterectangle.cs

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

namespace VCSharp
{
	/// <summary>
	/// CCreateRectangle 的摘要说明。
	/// </summary>
	public class CCreateRectangle:ICommand
	{
		private int m_Step;
		private PointF m_basePos;
		private PointF m_desPos;

		public CCreateRectangle()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

		public void LButtonDown(Graphics g,PointF aPos,ArrayList ges,ArrayList geSels)
		{
		
			PointF prePos=new PointF();
			//记录鼠标左键的单击次数
			m_Step+=1;
			switch (m_Step) 
			{
				case 1:
					m_basePos=aPos;
					m_desPos=aPos;
					break;
				case 2:
					//重绘并删除前一位置的直线段
					prePos=m_basePos;
					CRectangle tempRect=new CRectangle(m_basePos,m_desPos);
					tempRect.Draw(g,DrawMode.Drag);
					tempRect=null;
					//绘当前位置的直线段
					m_basePos=prePos;
					m_desPos=aPos;
					CRectangle newRect=new CRectangle(m_basePos,m_desPos);
					newRect.Draw(g,DrawMode.Normal);

					ges.Add(newRect);
       
					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_desPos;
					curPos=aPos;
					CRectangle tempRect1=new CRectangle(m_basePos,prePos);
					tempRect1.Draw(g,DrawMode.Drag);
					tempRect1=null;

					//绘当前位置的直线段
					CRectangle tempRect2=new CRectangle(m_basePos,curPos);
					m_desPos=curPos;
					tempRect2.Draw(g,DrawMode.Drag);
					tempRect2=null;

					break;
			}
		}

		//单击鼠标右键的绘图行为
		public void RButtonDown(Graphics g,PointF aPos)
		{
			if (m_Step==1) 
			{
				CRectangle tempRect=new CRectangle(m_basePos,m_desPos);
				tempRect.Draw(g,DrawMode.Drag);
				tempRect=null;
			}
			m_Step=0;
		}

	}
}

⌨️ 快捷键说明

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