EllipsePort.cs 772 B

1234567891011121314151617181920212223242526272829
  1. using System.Windows;
  2. namespace SHJX.Service.WorkFlowEdit
  3. {
  4. public class EllipsePort: PortBase
  5. {
  6. static EllipsePort()
  7. {
  8. FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(
  9. typeof(EllipsePort), new FrameworkPropertyMetadata(typeof(EllipsePort)));
  10. }
  11. public override Point GetEdgePoint(Point target)
  12. {
  13. var a = ActualWidth / 2;
  14. var b = ActualHeight / 2;
  15. var p = new Point(target.X - Center.X, target.Y - Center.Y);
  16. p = GeometryHelper.EllipseLineIntersection(a, b, p);
  17. return new Point(p.X + Center.X, p.Y + Center.Y);
  18. }
  19. public override bool IsNear(Point point)
  20. {
  21. var a = ActualWidth / 2 + Sensitivity;
  22. var b = ActualHeight / 2 + Sensitivity;
  23. return GeometryHelper.EllipseContains(Center, a, b, point);
  24. }
  25. }
  26. }