You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.0 KiB
C#
99 lines
3.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Drawing;
|
|
using System.ComponentModel;
|
|
|
|
namespace GeoSigmaViewer
|
|
{
|
|
//绘制多段线:此线可包含直线段、圆弧、三次样条曲线。
|
|
public class DrawToolCurve : DrawTool
|
|
{
|
|
private MouseMoveResult mmResult;
|
|
public DrawToolCurve()
|
|
{
|
|
ToolCursor = DrawCursors.CurveDraw;
|
|
ItemType = DrawItemType.ITEM_CURVE;
|
|
mmResult = new MouseMoveResult();
|
|
}
|
|
public override void Start()
|
|
{
|
|
drawer.ChangeContextMenu(DrawToolType.Curve);
|
|
}
|
|
public override void End()
|
|
{
|
|
drawer.ChangeContextMenu(DrawToolType.Select);
|
|
}
|
|
|
|
public override void Execute(string cmdString)
|
|
{
|
|
switch(cmdString)
|
|
{
|
|
case "cancel":
|
|
{
|
|
drawer.Geo.CancelCurve();
|
|
drawer.Geo.EnableRedraw(true);
|
|
drawer.ReDraw();
|
|
}
|
|
break;
|
|
case "end":
|
|
{
|
|
drawer.Geo.EndCurve();
|
|
drawer.Geo.EnableRedraw(true);
|
|
drawer.ReDraw();
|
|
}
|
|
break;
|
|
case "autoclose":
|
|
{
|
|
drawer.Geo.AutoCloseCurve();
|
|
drawer.Geo.EnableRedraw(true);
|
|
drawer.ReDraw();
|
|
}
|
|
break;
|
|
case "merge":
|
|
{
|
|
drawer.Geo.ChangeCurveMergeState();
|
|
drawer.Geo.EnableRedraw(true);
|
|
drawer.ReDraw();
|
|
}
|
|
break;
|
|
case "next":
|
|
{
|
|
drawer.Geo.DrawNextCurve();
|
|
drawer.Geo.EnableRedraw(true);
|
|
drawer.ReDraw();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
public override void OnLButtonDown(Drawer drawArea, MouseEventArgs e)
|
|
{
|
|
drawArea.Geo.OnLButtonDown(e.X, e.Y);
|
|
//base.OnLButtonDown(drawArea, e);
|
|
}
|
|
|
|
public override void OnLButtonUp(Drawer drawArea, MouseEventArgs e)
|
|
{
|
|
drawArea.Geo.OnLButtonUp(e.X, e.Y);
|
|
drawArea.Geo.EnableRedraw(true);
|
|
// 不用刷新,结束时刷新一次就行。
|
|
//drawArea.ReDraw();
|
|
}
|
|
|
|
public override void OnMouseMove(Drawer drawArea, MouseEventArgs e)
|
|
{
|
|
//if (e.Button == MouseButtons.Left)
|
|
{
|
|
Graphics g = drawArea.CreateGraphics();
|
|
drawArea.Geo.ItemMouseMove(g.GetHdc(), e.X, e.Y, ref mmResult);
|
|
}
|
|
}
|
|
}
|
|
}
|