RubberbandAdorner.cs 940 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Linq;
  2. using System.Windows;
  3. using System.Windows.Media;
  4. namespace SHJX.Service.WorkFlowEdit
  5. {
  6. class RubberbandAdorner : DragAdorner
  7. {
  8. private Pen _pen;
  9. public RubberbandAdorner(DiagramView view, Point start)
  10. : base(view, start)
  11. {
  12. _pen = new Pen(Brushes.Black, 2);
  13. }
  14. protected override bool DoDrag()
  15. {
  16. InvalidateVisual();
  17. return true;
  18. }
  19. protected override void EndDrag()
  20. {
  21. if (DoCommit)
  22. {
  23. var rect = new Rect(Start, End);
  24. var items = View.Items.Where(p => p.CanSelect && rect.Contains(p.Bounds));
  25. View.Selection.SetRange(items);
  26. }
  27. }
  28. protected override void OnRender(DrawingContext dc)
  29. {
  30. dc.DrawRectangle(Brushes.Transparent, _pen, new Rect(Start, End));
  31. }
  32. }
  33. }