From 7d4b2ee68bcbbf3070394dd61ae2b0e880782840 Mon Sep 17 00:00:00 2001 From: ClemensF Date: Wed, 12 Dec 2018 17:51:24 +0100 Subject: [PATCH] Version 4.12. Added MapControl.Images project --- MapImages/Shared/WorldFile.cs | 52 ------------------- MapImages/Shared/WorldFileParameters.cs | 12 ++--- .../Shared/ZoomLevelToOpacityConverter.cs | 3 +- 3 files changed, 8 insertions(+), 59 deletions(-) diff --git a/MapImages/Shared/WorldFile.cs b/MapImages/Shared/WorldFile.cs index 59492305..225e5c5a 100644 --- a/MapImages/Shared/WorldFile.cs +++ b/MapImages/Shared/WorldFile.cs @@ -77,57 +77,5 @@ namespace MapControl.Images SetWorldImage(image, bitmap, parameters, projection); } - - public static FrameworkElement CreateWorldImage(BitmapSource bitmap, WorldFileParameters parameters) - { - if (parameters.XScale == 0d || parameters.YScale == 0d) - { - throw new ArgumentException("Invalid WorldFileParameters, XScale and YScale must be non-zero."); - } - - var pixelWidth = parameters.XScale; - var pixelHeight = parameters.YScale; - var rotation = 0d; - - if (parameters.YSkew != 0 || parameters.XSkew != 0) - { - pixelWidth = Math.Sqrt(parameters.XScale * parameters.XScale + parameters.YSkew * parameters.YSkew); - pixelHeight = Math.Sqrt(parameters.YScale * parameters.YScale + parameters.XSkew * parameters.XSkew); - - var xAxisRotation = Math.Atan2(parameters.YSkew, parameters.XScale) / Math.PI * 180d; - var yAxisRotation = Math.Atan2(parameters.XSkew, -parameters.YScale) / Math.PI * 180d; - rotation = 0.5 * (xAxisRotation + yAxisRotation); - } - - var x1 = parameters.XOrigin; - var x2 = parameters.XOrigin + pixelWidth * bitmap.PixelWidth; - var y1 = parameters.YOrigin; - var y2 = parameters.YOrigin + pixelHeight * bitmap.PixelHeight; - - var bbox = new BoundingBox - { - West = Math.Min(x1, x2), - East = Math.Max(x1, x2), - South = Math.Min(y1, y2), - North = Math.Max(y1, y2) - }; - - FrameworkElement image = new Image - { - Source = bitmap, - Stretch = Stretch.Fill - }; - - if (rotation != 0d) - { - image.RenderTransform = new RotateTransform { Angle = rotation }; - var panel = new Grid(); - panel.Children.Add(image); - image = panel; - } - - MapPanel.SetBoundingBox(image, bbox); - return image; - } } } diff --git a/MapImages/Shared/WorldFileParameters.cs b/MapImages/Shared/WorldFileParameters.cs index 267136d4..5f1e8e29 100644 --- a/MapImages/Shared/WorldFileParameters.cs +++ b/MapImages/Shared/WorldFileParameters.cs @@ -54,12 +54,12 @@ namespace MapControl.Images YOrigin = yorigin; } - public double XScale { get; set; } - public double YSkew { get; set; } - public double XSkew { get; set; } - public double YScale { get; set; } - public double XOrigin { get; set; } - public double YOrigin { get; set; } + public double XScale { get; set; } // A + public double YSkew { get; set; } // D + public double XSkew { get; set; } // B + public double YScale { get; set; } // E + public double XOrigin { get; set; } // C + public double YOrigin { get; set; } // F public BoundingBox GetBoundingBox(double imageWidth, double imageHeight, MapProjection projection = null) { diff --git a/MapImages/Shared/ZoomLevelToOpacityConverter.cs b/MapImages/Shared/ZoomLevelToOpacityConverter.cs index 2fb38717..fd667053 100644 --- a/MapImages/Shared/ZoomLevelToOpacityConverter.cs +++ b/MapImages/Shared/ZoomLevelToOpacityConverter.cs @@ -19,6 +19,7 @@ namespace MapControl.Images public double MinZoomLevel { get; set; } = 0d; public double MaxZoomLevel { get; set; } = 22d; public double FadeZoomRange { get; set; } = 1d; + public double MaxOpacity { get; set; } = 1d; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { @@ -32,7 +33,7 @@ namespace MapControl.Images if (zoomLevel > MinZoomLevel && zoomLevel < MaxZoomLevel) { - opacity = 1d; + opacity = MaxOpacity; if (FadeZoomRange > 0d) {