using Resources;
using System.Drawing;
using System.Windows.Forms;
namespace SmartCoalApplication.Annotation.Other
{
///
/// 平移工具(手型)
///
public class PanTool : Tool
{
private static Cursor cursorMouseDown = new Cursor(PdnResources.GetResourceStream("Cursors.PanToolCursorMouseDown.cur"));
private static Cursor cursorMouseUp = new Cursor(PdnResources.GetResourceStream("Cursors.PanToolCursor.cur"));
private static bool tracking = false;
private static Point lastMouseXY;
private static int ignoreMouseMove = 0;
private static ISurfaceBox surfaceBox;
private static bool CanPan()
{
if (surfaceBox.GetVisibleDocumentRectangleF().Size == surfaceBox.GetDocumentSize())
{
return false;
}
else
{
return true;
}
}
public static void OnMouseDown(ISurfaceBox drawArea, MouseEventArgs e)
{
surfaceBox = drawArea;
lastMouseXY = new Point(e.X, e.Y);
tracking = true;
if (CanPan())
{
drawArea.Cursor = cursorMouseDown;
}
else
{
drawArea.Cursor = null;
}
}
public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e)
{
surfaceBox = drawArea;
if (ignoreMouseMove > 0)
{
--ignoreMouseMove;
}
else if (tracking)
{
Point mouseXY = new Point(e.X, e.Y);
Size delta = new Size(mouseXY.X - lastMouseXY.X, mouseXY.Y - lastMouseXY.Y);
if (delta.Width != 0 || delta.Height != 0)
{
PointF scrollPos = drawArea.GetDocumentScrollPositionF();
PointF newScrollPos = new PointF(scrollPos.X - delta.Width, scrollPos.Y - delta.Height);
++ignoreMouseMove;
drawArea.SetDocumentScrollPositionF(newScrollPos);
lastMouseXY = mouseXY;
}
}
else
{
if (CanPan())
{
drawArea.Cursor = cursorMouseUp;
}
else
{
drawArea.Cursor = null;
}
}
}
public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e)
{
surfaceBox = drawArea;
if (CanPan())
{
drawArea.Cursor = cursorMouseUp;
}
else
{
drawArea.Cursor = null;
}
tracking = false;
}
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()
{
}
}
}