2025-07-31 20:12:24 +08:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
|
|
2026-01-02 17:30:41 +08:00
|
|
|
|
namespace Melskin.Converters.Internal;
|
2025-08-12 23:08:54 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// IntensityToSlotBlurConverter 类实现了 IValueConverter 接口,用于将强度值(double 类型)转换为模糊半径(同样为 double 类型)。此转换器在UI设计中特别适用于根据特定的强度参数动态调整元素的模糊效果。例如,在实现视觉反馈或突出显示某一部分时,可通过改变强度来控制模糊程度,从而达到更好的用户体验。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// 该转换器定义了一个从4到8之间的线性映射关系,其中输入的强度值被放大后加上一个基础值,以确保输出结果始终落在指定范围内。这种转换逻辑简单直接,易于理解与维护。
|
|
|
|
|
|
/// </remarks>
|
|
|
|
|
|
[ValueConversion(typeof(double), typeof(double))]
|
|
|
|
|
|
internal class IntensityToSlotBlurConverter : IValueConverter
|
2025-07-31 20:12:24 +08:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
2025-08-12 23:08:54 +08:00
|
|
|
|
/// Instance 是 IntensityToSlotBlurConverter 类的单例实例,用于在整个应用程序中共享同一转换器对象。
|
|
|
|
|
|
/// 通过使用此单例,可以避免在不同地方创建多个相同功能的转换器实例,从而提高性能和减少资源消耗。
|
2025-07-31 20:12:24 +08:00
|
|
|
|
/// </summary>
|
2025-08-12 23:08:54 +08:00
|
|
|
|
public static readonly IntensityToSlotBlurConverter Instance = new();
|
|
|
|
|
|
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
|
2025-07-31 20:12:24 +08:00
|
|
|
|
{
|
2025-08-20 12:10:13 +08:00
|
|
|
|
var intensity = (double)(value ?? 0);
|
2025-08-12 23:08:54 +08:00
|
|
|
|
//模糊范围 4~8
|
|
|
|
|
|
return 4 * intensity + 4;
|
|
|
|
|
|
}
|
2025-07-31 20:12:24 +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-31 20:12:24 +08:00
|
|
|
|
}
|
2025-08-12 23:08:54 +08:00
|
|
|
|
}
|