using PaintDotNet.Annotation.Enum;
using PaintDotNet.Base.CommTool;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Globalization;
using System.Runtime.Serialization;
using System.Windows.Forms;
namespace PaintDotNet.Annotation.FieldView
{
///
/// 多边形视场绘制
///
public class ViewTriangleEx : ViewBase
{
#region Constructor
private ViewTriangleEx()
{
objectType = DrawClass.View;
drawToolType = DrawToolType.ViewTriangleEx;
Rotatable = true;
Initialize();
}
public ViewTriangleEx(int x, int y) : this()
{
Points = new List();
AddPoint(new PointF(x, y));
}
public ViewTriangleEx(List points) : this()
{
Points = points;
}
#endregion
internal void SetNextPoint(Point p)
{
AddPoint(p);
}
#region Handle
public override int HandleCount
{
get => Points.Count > 2 ? Points.Count + 1 : Points.Count;
}
public override Cursor GetHandleCursor(int handleNumber)
{
if (handleNumber > Points.Count)
return m_rotateCursor;
else
return m_resizeCursor;
}
public override PointF GetHandle(int handleNumber)
{
if (handleNumber < 4) return Points[handleNumber - 1];
else
{
var x = (Points[0].X + Points[1].X) / 2;
var y = (Points[0].Y + Points[1].Y) / 2;
return new PointF(x, y);
}
}
public override void MoveHandleTo(Point point, int handleNumber)
{
if (handleNumber == 4)
MoveRotate(point);
else
Points[handleNumber - 1] = point;
OnPropertyChanged();
}
#endregion
#region Clone
public override DrawObject Clone()
{
return Clone(ISurfaceBox);
}
public override DrawObject Clone(ISurfaceBox surfaceBox)
{
ViewTriangleEx drawRectangle = new ViewTriangleEx(Points);
drawRectangle.ISurfaceBox = surfaceBox;
drawRectangle.Color = Color;
drawRectangle.combineMode = combineMode;
drawRectangle.ID = ID;
FillDrawObjectFields(drawRectangle);
return drawRectangle;
}
#endregion
}
}