SelectionAdorner.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Avalonia.Controls;
  2. using Avalonia.Controls.Primitives;
  3. using Avalonia.Media;
  4. namespace Avalonia.Xaml.Interactions.Draggable;
  5. /// <summary>
  6. ///
  7. /// </summary>
  8. public class SelectionAdorner : Control
  9. {
  10. /// <summary>
  11. ///
  12. /// </summary>
  13. /// <param name="context"></param>
  14. public override void Render(DrawingContext context)
  15. {
  16. var adornedElement = GetValue(AdornerLayer.AdornedElementProperty);
  17. if (adornedElement is null)
  18. {
  19. return;
  20. }
  21. var bounds = adornedElement.Bounds;
  22. var brush = new SolidColorBrush(Colors.White) { Opacity = 0.5 };
  23. var pen = new Pen(new SolidColorBrush(Colors.Black), 1.5);
  24. var r = 5.0;
  25. var topLeft = new RectangleGeometry(new Rect(-r, -r, r + r, r + r));
  26. var topRight = new RectangleGeometry(new Rect(-r, bounds.Height - r, r + r, r + r));
  27. var bottomLeft = new RectangleGeometry(new Rect(bounds.Width - r, -r, r + r, r + r));
  28. var bottomRight = new RectangleGeometry(new Rect(bounds.Width - r, bounds.Height - r, r + r, r + r));
  29. context.DrawGeometry(brush, pen, topLeft);
  30. context.DrawGeometry(brush, pen, topRight);
  31. context.DrawGeometry(brush, pen, bottomLeft);
  32. context.DrawGeometry(brush, pen, bottomRight);
  33. }
  34. }