mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
// XAML Map Control - https://github.com/ClemensFischer/XAML-Map-Control
|
|
// © 2018 Clemens Fischer
|
|
// Licensed under the Microsoft Public License (Ms-PL)
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
#if WINDOWS_UWP
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Data;
|
|
#else
|
|
using System.Windows;
|
|
using System.Windows.Data;
|
|
#endif
|
|
|
|
namespace MapControl.Images
|
|
{
|
|
public class ZoomLevelToOpacityConverter : IValueConverter
|
|
{
|
|
public double MinZoomLevel { get; set; } = 0d;
|
|
public double MaxZoomLevel { get; set; } = 22d;
|
|
public double FadeZoomRange { get; set; } = 1d;
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
if (!(value is double))
|
|
{
|
|
return DependencyProperty.UnsetValue;
|
|
}
|
|
|
|
var zoomLevel = (double)value;
|
|
var opacity = 0d;
|
|
|
|
if (zoomLevel > MinZoomLevel && zoomLevel < MaxZoomLevel)
|
|
{
|
|
opacity = 1d;
|
|
|
|
if (FadeZoomRange > 0d)
|
|
{
|
|
opacity = Math.Min(opacity, (zoomLevel - MinZoomLevel) / FadeZoomRange);
|
|
opacity = Math.Min(opacity, (MaxZoomLevel - zoomLevel) / FadeZoomRange);
|
|
}
|
|
}
|
|
|
|
return opacity;
|
|
}
|
|
|
|
public object Convert(object value, Type targetType, object parameter, string language)
|
|
{
|
|
return Convert(value, targetType, parameter, CultureInfo.InvariantCulture);
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, string language)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|
|
}
|