using System; using System.Globalization; using System.Linq; using System.Net.Http.Headers; using Avalonia; using Avalonia.Controls; using Avalonia.Media; using Avalonia.Platform; using Avalonia.Rendering; using Avalonia.Threading; namespace ControlCatalog.Pages { public class ScreenPage : UserControl { private double _leftMost; private double _topMost; private IBrush _primaryBrush = SolidColorBrush.Parse("#FF0078D7"); private IBrush _defaultBrush = Brushes.LightGray; private IPen _activePen = new Pen(Brushes.Black); private IPen _defaultPen = new Pen(Brushes.DarkGray); protected override bool BypassFlowDirectionPolicies => true; protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) { base.OnAttachedToVisualTree(e); if(VisualRoot is Window w) { w.PositionChanged += (_, _) => InvalidateVisual(); } } public override void Render(DrawingContext context) { base.Render(context); if (!(VisualRoot is Window w)) { return; } var screens = w.Screens.All; var scaling = ((IRenderRoot)w).RenderScaling; var activeScreen = w.Screens.ScreenFromBounds(new PixelRect(w.Position, PixelSize.FromSize(w.Bounds.Size, scaling))); double maxBottom = 0; for (int i = 0; i