using PaintDotNet.Annotation.Enum;
using System.Drawing;
using System.Windows.Forms;
namespace PaintDotNet.Annotation.FieldView
{
public class ToolViewRectangleEx : ToolObject
{
private static ViewRectangleEx rect;
///
/// 鼠标按下事件
///
///
///
public static void OnMouseDown(ISurfaceBox surfaceBox, MouseEventArgs e)
{
WorkFlowCreat(surfaceBox, e, EventType.Down);
}
///
/// 鼠标移动事件
///
///
///
public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e)
{
WorkFlowCreat(drawArea, e, EventType.Move);
drawArea.Refresh();
drawArea.GraphicsList.Dirty = true;
}
static void Done(ISurfaceBox drawArea)
{
drawArea.ActiveTool = DrawToolType.Pointer;
drawArea.GraphicsList.OnSelectChanged();
drawArea.Refresh();
rect = null;
_step = 0;
}
static void Cancel(ISurfaceBox drawArea)
{
if (rect != null)
{
drawArea.GraphicsList.RemoveObj(rect);
}
Done(drawArea);
}
static int _step = 0;
private static void WorkFlowCreat(ISurfaceBox surfaceBox, MouseEventArgs e, EventType type)
{
Point p = GetEventPointInArea(surfaceBox, e.Location);
if (e.Button == MouseButtons.Right)
Cancel(surfaceBox);
switch (_step)
{
case 0:
if (e.Button == MouseButtons.Left && type == EventType.Down)
{
rect = new ViewRectangleEx(p);
rect.ISurfaceBox = surfaceBox;
rect.combineMode = surfaceBox.GetCombineMode();
AddNewObjectForView(surfaceBox, rect);
_step++;
}
break;
case 1:
if (e.Button == MouseButtons.Left && type == EventType.Down)
{
_step++;
}
else if (type == EventType.Move)
{
rect.CreatStep(p, _step);
}
break;
case 2:
if (e.Button == MouseButtons.Left && type == EventType.Down)
{
Done(surfaceBox);
}
else if (type == EventType.Move)
{
rect.CreatStep(p, _step);
}
break;
}
}
private enum EventType
{
Down, Up, Move
}
#region Useless
public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e)
{
}
public static void OnMouseClick(ISurfaceBox drawArea, MouseEventArgs e)
{
}
///
/// 鼠标左键双击
///
///
///
public static void OnMouseLeftDoubleClick(ISurfaceBox surfacebox, MouseEventArgs e)
{
}
///
/// 删除按键
///
///
///
public static void OnDelKeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
{
}
///
/// 删除划痕处理&污迹处理选择区域的痕迹
///
///
///
public static void OnDel2KeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
{
}
///
/// 清空全部时调用该方法,将可能未绘制完的对象清空
///
public static void beginWithNewObject()
{
}
#endregion
}
}