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