LinkAdorner.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Windows;
  2. using System.Windows.Media;
  3. namespace SHJX.Service.WorkFlowEdit
  4. {
  5. public class LinkAdorner : DragAdorner
  6. {
  7. private Pen _pen;
  8. private IPort _port;
  9. public IPort Port
  10. {
  11. get { return _port; }
  12. set
  13. {
  14. if (_port != value)
  15. {
  16. _port = value;
  17. InvalidateVisual();
  18. }
  19. }
  20. }
  21. public LinkAdorner(DiagramView view, Point start)
  22. : base(view, start)
  23. {
  24. _pen = new Pen(new SolidColorBrush(Colors.Red), 1);
  25. }
  26. protected override bool DoDrag()
  27. {
  28. View.LinkTool.DragTo(End - Start);
  29. return View.LinkTool.CanDrop();
  30. }
  31. protected override void EndDrag()
  32. {
  33. View.LinkTool.EndDrag(DoCommit);
  34. }
  35. protected override void OnRender(DrawingContext drawingContext)
  36. {
  37. if (Port != null)
  38. {
  39. var p = Port.Center;
  40. drawingContext.DrawLine(_pen, new Point(p.X, p.Y - 3.5), new Point(p.X, p.Y + 3.5));
  41. drawingContext.DrawLine(_pen, new Point(p.X - 3.5, p.Y), new Point(p.X + 3.5, p.Y));
  42. }
  43. }
  44. }
  45. }