using PaintDotNet.Annotation.Enum; using PaintDotNet.Annotation.Label; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace PaintDotNet.Annotation.Other { /// /// 二值提取 - 交互操作 - 分割 - 折线 /// public class DrawBinaryConnectionPolygonLine : DrawObject { public List pointArray = new List(); public DrawBinaryConnectionPolygonLine(ISurfaceBox surfaceBox, int x1, int y1) : base() { this.objectType = DrawClass.Interaction; this.drawToolType = DrawToolType.BinaryConnectionPolygonLine; this.ISurfaceBox = surfaceBox; startPoint.X = x1; startPoint.Y = y1; endPoint.X = x1; endPoint.Y = y1; pointArray.Add(new Point(x1, y1)); Initialize(); } public override DrawObject Clone() { return null; } public override void Draw(Graphics g) { if (HandleCount >= 2) { g.SmoothingMode = SmoothingMode.AntiAlias; Pen pen = new Pen(Color.Red, this.ISurfaceBox.GetConnectionWidth()); pen.DashStyle = DashStyle.Dash; g.DrawLines(pen, pointArray.ToArray()); pen.Dispose(); } } public void AddPoint(Point point) { pointArray.Add(point); } internal void setNextPoint(Point p) { AddPoint(p); startPoint = endPoint; endPoint = p; } public override RectangleF GetBoundingBox() { return rectangle; } public override void MoveHandleTo(Point point, int handleNumber) { if (handleNumber < 1) handleNumber = 1; if (handleNumber > pointArray.Count) handleNumber = pointArray.Count; pointArray[handleNumber - 1] = point; } public override int HandleCount { get { return pointArray.Count; } } } }