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#

1 month ago
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);
}
}
}
}