123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using PaintDotNet.Annotation.Enum;
- using PaintDotNet.Annotation.Label;
- using System.Drawing;
- using System.Windows.Forms;
- namespace PaintDotNet.Annotation.Other
- {
- /// <summary>
- /// 二值提取-交互操作-选择-椭圆
- /// </summary>
- public class DrawBinaryChoiseOval : DrawObject
- {
- public DrawBinaryChoiseOval(ISurfaceBox surfaceBox, int x, int y, int width, int height) : base()
- {
- this.objectType = DrawClass.Interaction;
- this.drawToolType = DrawToolType.BinaryChoiseOval;
- this.rectangle.X = x;
- this.rectangle.Y = y;
- this.rectangle.Width = width;
- this.rectangle.Height = height;
- Initialize();
- }
- public override DrawObject Clone()
- {
- return null;
- }
- public override void Draw(Graphics g)
- {
- Pen pen = new Pen(Color.Red, 3);
- pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
- SolidBrush fillBrush = new SolidBrush(Color.Transparent);
- g.FillRectangle(fillBrush, DrawRectangle.GetNormalizedRectangle(Rectangle));
- g.DrawEllipse(pen, DrawRectangle.GetNormalizedRectangle(Rectangle));
- fillBrush.Dispose();
- pen.Dispose();
- }
- public override RectangleF GetBoundingBox()
- {
- return 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;
- }
- }
- }
|