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

📄 ccreateline.cs

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

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

	public class CCreateLine:ICommand
	{
		private int m_Step;
		private PointF m_Begin;
		private PointF m_End;

  		public CCreateLine()
		{
			//
			// 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_Begin=aPos;
					m_End=aPos;
					break;
				case 2:
					//重绘并删除前一位置的直线段
					prePos=m_Begin;
					CLine tempLine=new CLine(m_Begin,m_End);
					tempLine.Draw(g,DrawMode.Drag);
					tempLine=null;
					//绘当前位置的直线段
					m_Begin=prePos;
					m_End=aPos;
					CLine newLine=new CLine(m_Begin,m_End);
					newLine.Draw(g,DrawMode.Normal);

					ges.Add(newLine);
       
					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_End;
					curPos=aPos;
					CLine tempLine1=new CLine(m_Begin,prePos);
					tempLine1.Draw(g,DrawMode.Drag);
					tempLine1=null;

					//绘当前位置的直线段
					CLine tempLine2=new CLine(m_Begin,curPos);
					m_End=curPos;
					tempLine2.Draw(g,DrawMode.Drag);
					tempLine2=null;

					break;
			}
		}

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

	}
}

⌨️ 快捷键说明

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