From 93b58fa01e72e55314cdec99b1eac53a3cbcc01c Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Wed, 22 May 2024 10:16:22 +0200 Subject: [PATCH] Removed UseLayoutRounding handling from MapPanel --- MapControl/Avalonia/MapBase.Avalonia.cs | 2 +- MapControl/Avalonia/MapPanel.Avalonia.cs | 2 +- MapControl/Shared/GroundOverlay.cs | 7 +++---- MapControl/Shared/MapPanel.cs | 16 +++------------- MapControl/Shared/WmsImageLayer.cs | 11 +---------- MapControl/WPF/MapPanel.WPF.cs | 2 +- MapControl/WinUI/MapPanel.WinUI.cs | 2 +- 7 files changed, 11 insertions(+), 31 deletions(-) diff --git a/MapControl/Avalonia/MapBase.Avalonia.cs b/MapControl/Avalonia/MapBase.Avalonia.cs index a99c9ff6..db51435d 100644 --- a/MapControl/Avalonia/MapBase.Avalonia.cs +++ b/MapControl/Avalonia/MapBase.Avalonia.cs @@ -58,7 +58,7 @@ namespace MapControl (map, value) => map.CoerceHeadingProperty(value)); public static readonly DirectProperty ViewScaleProperty = - AvaloniaProperty.RegisterDirect(nameof(ViewScale), map => map.ViewScale); + AvaloniaProperty.RegisterDirect(nameof(ViewScale), map => map.ViewTransform.Scale); private CancellationTokenSource centerCts; private CancellationTokenSource zoomLevelCts; diff --git a/MapControl/Avalonia/MapPanel.Avalonia.cs b/MapControl/Avalonia/MapPanel.Avalonia.cs index 1bfb51fe..7d30e6ba 100644 --- a/MapControl/Avalonia/MapPanel.Avalonia.cs +++ b/MapControl/Avalonia/MapPanel.Avalonia.cs @@ -28,7 +28,7 @@ namespace MapControl element.RenderTransformOrigin = new RelativePoint(originX, originY, RelativeUnit.Relative); } - private Controls ChildElements => Children; + protected Controls ChildElements => Children; private static void SetVisible(Control element, bool visible) { diff --git a/MapControl/Shared/GroundOverlay.cs b/MapControl/Shared/GroundOverlay.cs index cd312c22..0d8ab77b 100644 --- a/MapControl/Shared/GroundOverlay.cs +++ b/MapControl/Shared/GroundOverlay.cs @@ -106,8 +106,7 @@ namespace MapControl FrameworkElement overlay = new Image { Source = imageOverlay.ImageSource, - Stretch = Stretch.Fill, - UseLayoutRounding = false + Stretch = Stretch.Fill }; if (imageOverlay.LatLonBox.Rotation != 0d) @@ -115,9 +114,9 @@ namespace MapControl overlay.RenderTransform = new RotateTransform { Angle = -imageOverlay.LatLonBox.Rotation }; overlay.RenderTransformOrigin = new Point(0.5, 0.5); - // Additional Panel for map rotation, see MapPanel.ArrangeElementWithBoundingBox. + // Additional Panel for map rotation, see MapPanel.ArrangeElement(FrameworkElement, ViewRect). // - var panel = new Grid { UseLayoutRounding = false }; + var panel = new Grid(); panel.Children.Add(overlay); overlay = panel; } diff --git a/MapControl/Shared/MapPanel.cs b/MapControl/Shared/MapPanel.cs index b645e71b..4d9f4db7 100644 --- a/MapControl/Shared/MapPanel.cs +++ b/MapControl/Shared/MapPanel.cs @@ -324,7 +324,7 @@ namespace MapControl break; } - ArrangeElement(element, new Rect(x, y, size.Width, size.Height)); + element.Arrange(new Rect(x, y, size.Width, size.Height)); } private static void ArrangeElement(FrameworkElement element, Size parentSize) @@ -371,7 +371,7 @@ namespace MapControl break; } - ArrangeElement(element, new Rect(x, y, width, height)); + element.Arrange(new Rect(x, y, width, height)); } private static void ArrangeElement(FrameworkElement element, ViewRect rect) @@ -379,7 +379,7 @@ namespace MapControl element.Width = rect.Rect.Width; element.Height = rect.Rect.Height; - ArrangeElement(element, rect.Rect); + element.Arrange(rect.Rect); if (element.RenderTransform is RotateTransform rotateTransform) { @@ -391,16 +391,6 @@ namespace MapControl } } - private static void ArrangeElement(FrameworkElement element, Rect rect) - { - if (element.UseLayoutRounding) - { - rect = new Rect(Math.Round(rect.X), Math.Round(rect.Y), Math.Round(rect.Width), Math.Round(rect.Height)); - } - - element.Arrange(rect); - } - internal static Size GetDesiredSize(FrameworkElement element) { var width = 0d; diff --git a/MapControl/Shared/WmsImageLayer.cs b/MapControl/Shared/WmsImageLayer.cs index 0156a767..bbba0d3d 100644 --- a/MapControl/Shared/WmsImageLayer.cs +++ b/MapControl/Shared/WmsImageLayer.cs @@ -10,7 +10,6 @@ using System.Threading.Tasks; using System.Xml.Linq; #if AVALONIA using DependencyProperty = Avalonia.AvaloniaProperty; -using FrameworkElement = Avalonia.Controls.Control; using ImageSource = Avalonia.Media.IImage; #elif WINUI using Microsoft.UI.Xaml; @@ -38,7 +37,7 @@ namespace MapControl DependencyPropertyHelper.Register(nameof(WmsLayers), null, false, async (layer, oldValue, newValue) => { - // Ignore property change from GetImageAsync, when Layers was null. + // Ignore property change from GetImageAsync when Layers was null. // if (oldValue != null) { @@ -50,14 +49,6 @@ namespace MapControl DependencyPropertyHelper.Register(nameof(WmsStyles), string.Empty, false, async (layer, oldValue, newValue) => await layer.UpdateImageAsync()); - public WmsImageLayer() - { - foreach (FrameworkElement child in Children) - { - child.UseLayoutRounding = true; - } - } - /// /// The base request URL. /// diff --git a/MapControl/WPF/MapPanel.WPF.cs b/MapControl/WPF/MapPanel.WPF.cs index 19cc3d82..1e54c928 100644 --- a/MapControl/WPF/MapPanel.WPF.cs +++ b/MapControl/WPF/MapPanel.WPF.cs @@ -30,7 +30,7 @@ namespace MapControl element.RenderTransformOrigin = new Point(originX, originY); } - private IEnumerable ChildElements => Children.OfType(); + protected IEnumerable ChildElements => Children.OfType(); private static void SetVisible(FrameworkElement element, bool visible) { diff --git a/MapControl/WinUI/MapPanel.WinUI.cs b/MapControl/WinUI/MapPanel.WinUI.cs index 734d65ae..8edeedc0 100644 --- a/MapControl/WinUI/MapPanel.WinUI.cs +++ b/MapControl/WinUI/MapPanel.WinUI.cs @@ -63,7 +63,7 @@ namespace MapControl element.RenderTransformOrigin = new Point(originX, originY); } - private IEnumerable ChildElements => Children.OfType(); + protected IEnumerable ChildElements => Children.OfType(); private static void SetVisible(FrameworkElement element, bool visible) {