Files
ShrlAlgoToolkit/Melskin/Converters/Internal/IntensityToEmbossMarginRightBottomConverter.cs
2026-02-12 21:29:00 +08:00

29 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Globalization;
using System.Windows.Data;
namespace Melskin.Converters.Internal;
/// <summary>
/// IntensityToEmbossMarginRightBottomConverter 转换器用于将浮点数强度值转换为 Thickness 结构,以应用于右下边距。
/// 该转换器主要用于创建浮雕效果的控件中,通过调整边距来模拟不同强度下的视觉效果。
/// 当输入的强度值为1时产生的边距最小从而使得着色边框更加明显。随着强度值减小边距增大
/// 使着色部分看起来更模糊或更不显著。
/// </summary>
[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;
}
}