📄 ccreaterectangle.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 + -