178 lines
5.1 KiB
C#
178 lines
5.1 KiB
C#
using System.Drawing;
|
|
|
|
namespace CoreUnit.Control.UserControl.Canvas
|
|
{
|
|
public class SnapPointBase : ISnapPoint
|
|
{
|
|
protected UnitPoint m_snappoint;
|
|
protected RectangleF m_boundingRect;
|
|
|
|
protected IDrawObject m_owner;
|
|
public IDrawObject Owner {
|
|
get { return m_owner; }
|
|
}
|
|
|
|
public SnapPointBase(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
{
|
|
m_owner = owner;
|
|
m_snappoint = snappoint;
|
|
float size = (float)canvas.ToUnit(14);
|
|
m_boundingRect.X = (float)(snappoint.X - size / 2);
|
|
m_boundingRect.Y = (float)(snappoint.Y - size / 2);
|
|
m_boundingRect.Width = size;
|
|
m_boundingRect.Height = size;
|
|
}
|
|
|
|
#region ISnapPoint Members
|
|
public virtual UnitPoint SnapPoint {
|
|
get { return m_snappoint; }
|
|
}
|
|
|
|
public virtual RectangleF BoundingRect {
|
|
get { return m_boundingRect; }
|
|
}
|
|
|
|
public virtual void Draw(ICanvas canvas)
|
|
{
|
|
}
|
|
#endregion
|
|
|
|
protected void DrawPoint(ICanvas canvas, Pen pen, Brush fillBrush)
|
|
{
|
|
Rectangle screenrect = ScreenUtils.ConvertRect(ScreenUtils.ToScreenNormalized(canvas, m_boundingRect));
|
|
canvas.Graphics.DrawRectangle(pen, screenrect);
|
|
screenrect.X++;
|
|
screenrect.Y++;
|
|
screenrect.Width--;
|
|
screenrect.Height--;
|
|
if (fillBrush != null)
|
|
canvas.Graphics.FillRectangle(fillBrush, screenrect);
|
|
}
|
|
}
|
|
|
|
public class GridSnapPoint : SnapPointBase
|
|
{
|
|
public GridSnapPoint(ICanvas canvas, UnitPoint snappoint)
|
|
: base(canvas, null, snappoint)
|
|
{
|
|
}
|
|
|
|
#region ISnapPoint Members
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.Gray, null);
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
public class VertextSnapPoint : SnapPointBase
|
|
{
|
|
public VertextSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.Blue, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class MidpointSnapPoint : SnapPointBase
|
|
{
|
|
public MidpointSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class IntersectSnapPoint : SnapPointBase
|
|
{
|
|
public IntersectSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class NearestSnapPoint : SnapPointBase
|
|
{
|
|
public NearestSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
#region ISnapPoint Members
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
public class QuadrantSnapPoint : SnapPointBase
|
|
{
|
|
public QuadrantSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class DivisionSnapPoint : SnapPointBase
|
|
{
|
|
public DivisionSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class CenterSnapPoint : SnapPointBase
|
|
{
|
|
public CenterSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class PerpendicularSnapPoint : SnapPointBase
|
|
{
|
|
public PerpendicularSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
|
|
public class TangentSnapPoint : SnapPointBase
|
|
{
|
|
public TangentSnapPoint(ICanvas canvas, IDrawObject owner, UnitPoint snappoint)
|
|
: base(canvas, owner, snappoint)
|
|
{
|
|
}
|
|
public override void Draw(ICanvas canvas)
|
|
{
|
|
DrawPoint(canvas, Pens.White, Brushes.YellowGreen);
|
|
}
|
|
}
|
|
}
|