Files
ShrlAlgoToolkit/NeoUI/Melskin/Converters/Internal/IntensityToEmbossMarginRightBottomConverter.cs

29 lines
1.3 KiB
C#
Raw Normal View History

2025-07-31 20:12:24 +08:00
using System.Globalization;
2025-07-11 09:20:23 +08:00
using System.Windows.Data;
2026-01-02 17:30:30 +08:00
namespace VariaStudio.Converters.Internal;
2025-08-12 23:08:54 +08:00
/// <summary>
/// IntensityToEmbossMarginRightBottomConverter 转换器用于将浮点数强度值转换为 Thickness 结构,以应用于右下边距。
/// 该转换器主要用于创建浮雕效果的控件中,通过调整边距来模拟不同强度下的视觉效果。
/// 当输入的强度值为1时产生的边距最小从而使得着色边框更加明显。随着强度值减小边距增大
/// 使着色部分看起来更模糊或更不显著。
/// </summary>
[ValueConversion(typeof(double), typeof(Thickness))]
internal sealed class IntensityToEmbossMarginRightBottomConverter : IValueConverter
2025-07-11 09:20:23 +08:00
{
2025-08-12 23:08:54 +08:00
public static readonly IntensityToEmbossMarginRightBottomConverter Instance = new();
2025-07-31 20:12:24 +08:00
2025-08-12 23:08:54 +08:00
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);
}
2025-07-11 09:20:23 +08:00
2025-08-12 23:08:54 +08:00
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
2025-08-20 12:10:13 +08:00
return Binding.DoNothing;
2025-07-11 09:20:23 +08:00
}
2025-08-12 23:08:54 +08:00
}