using System.Globalization; using System.Windows.Data; namespace Melskin.Converters.Internal; /// /// IntensityToEmbossMarginRightBottomConverter 转换器用于将浮点数强度值转换为 Thickness 结构,以应用于右下边距。 /// 该转换器主要用于创建浮雕效果的控件中,通过调整边距来模拟不同强度下的视觉效果。 /// 当输入的强度值为1时,产生的边距最小,从而使得着色边框更加明显。随着强度值减小,边距增大, /// 使着色部分看起来更模糊或更不显著。 /// [ValueConversion(typeof(double), typeof(Thickness))] internal sealed class IntensityToEmbossMarginRightBottomConverter : IValueConverter { public static readonly IntensityToEmbossMarginRightBottomConverter Instance = new(); public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { var intensity = (double)(value ?? 0.5); //数值为1的时候边距最小,露出的着色边框越大 var marginValue = 4 * intensity; return new Thickness(marginValue, marginValue, -marginValue, -marginValue); } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { return Binding.DoNothing; } }