| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | using PaintDotNet.Annotation.Enum;using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PaintDotNet.Annotation.PhysicalPhaseAction{    /// <summary>    /// 物相提取->定义物体->轮廓->椭圆    /// </summary>    public class DrawPPhaseOval : DrawObject    {        private Pen pen = new Pen(Color.Blue, 2);        public DrawPPhaseOval(ISurfaceBox surfaceBox, int x, int y, int width, int height) : base()        {            this.objectType = DrawClass.PhaseExtraction;            this.drawToolType = DrawToolType.PPhaseOval;            this.rectangle.X = x;            this.rectangle.Y = y;            this.rectangle.Width = width;            this.rectangle.Height = height;        }        public override void Draw(Graphics g)        {            g.DrawEllipse(pen, GetNormalizedRectangle(Rectangle));        }        /// <summary>        /// Move handle to new pointscroll (resizing)        /// </summary>        /// <param name="pointscroll"></param>        /// <param name="handleNumber"></param>        public override void MoveHandleTo(Point point, int handleNumber)        {            float left = Rectangle.Left;            float top = Rectangle.Top;            float right = Rectangle.Right;            float bottom = Rectangle.Bottom;            switch (handleNumber)            {                case 1:                    left = point.X;                    top = point.Y;                    break;                case 2:                    top = point.Y;                    break;                case 3:                    right = point.X;                    top = point.Y;                    break;                case 4:                    right = point.X;                    break;                case 5:                    right = point.X;                    bottom = point.Y;                    break;                case 6:                    bottom = point.Y;                    break;                case 7:                    left = point.X;                    bottom = point.Y;                    break;                case 8:                    left = point.X;                    break;            }            SetRectangle(left, top, right - left, bottom - top);        }        protected void SetRectangle(float x, float y, float width, float height)        {            this.rectangle.X = x;            this.rectangle.Y = y;            this.rectangle.Width = width;            this.rectangle.Height = height;        }        public override DrawObject Clone()        {            return null;        }        public override RectangleF GetBoundingBox()        {            return rectangle;        }    }}
 |