Files
Shrlalgo.RvKits/Melskin/Converters/Internal/HueToBrushConverter.cs

49 lines
2.9 KiB
C#
Raw Normal View History

2025-08-20 12:10:13 +08:00
using System.Globalization;
using System.Windows.Data;
2026-01-02 17:30:41 +08:00
using Melskin.Controls;
2025-08-20 12:10:13 +08:00
2026-01-02 17:30:41 +08:00
namespace Melskin.Converters.Internal;
2025-08-20 12:10:13 +08:00
/// <summary>
/// 将色相值转换为画刷的转换器。此转换器实现了IValueConverter接口用于在绑定过程中将int类型的色相值转换成相应的SolidColorBrush。
/// 转换方法使用HsvToRgb静态方法来根据给定的色相、饱和度固定为1.0和亮度固定为1.0生成颜色并创建一个SolidColorBrush实例。
/// 如果输入值不是int类型则返回一个透明的画刷。
/// </summary>
2025-08-20 12:10:35 +08:00
internal class HueToBrushConverter : IValueConverter
2025-08-20 12:10:13 +08:00
{
2025-08-20 12:10:35 +08:00
public static HueToBrushConverter Instance { get; set; }= new();
2025-08-20 12:10:13 +08:00
/// <summary>
/// 将色相值转换为画刷的方法。此方法实现了IValueConverter接口中的Convert方法用于在数据绑定过程中将int类型的色相值转换成相应的SolidColorBrush。
/// 如果输入值是int类型则根据给定的色相、饱和度固定为1.0和亮度固定为1.0生成颜色并创建一个SolidColorBrush实例。如果输入值不是int类型则返回一个透明的画刷。
/// </summary>
/// <param name="value">要转换的色相值。</param>
/// <param name="t">目标类型,即转换后的数据类型,这里通常不需要使用。</param>
/// <param name="p">参数,通常用于传递额外的信息给转换器,本方法中未使用。</param>
/// <param name="c">文化信息,提供关于语言、国家/地区等的信息,以支持区域性特定的转换,本方法中未使用。</param>
/// <returns>如果输入值是有效的int类型色相值则返回对应的颜色画刷否则返回一个透明画刷。</returns>
public object Convert(object? value,
2025-09-04 22:39:00 +08:00
Type t,
2025-08-20 12:10:13 +08:00
object? p,
CultureInfo c) =>
value is int hue
? new SolidColorBrush(ColorPanel.HsvToRgb(hue,
1.0,
1.0,
255))
: Brushes.Transparent;
/// <summary>
/// 将画刷转换回色相值的方法。当前实现中此方法抛出NotImplementedException异常表示尚未实现该功能。
/// </summary>
/// <param name="v">要转换的画刷对象。</param>
/// <param name="t">目标类型,即转换后的数据类型。</param>
/// <param name="p">参数,通常用于传递额外的信息给转换器。</param>
/// <param name="c">文化信息,提供关于语言、国家/地区等的信息,以支持区域性特定的转换。</param>
/// <returns>由于方法未实现,实际上不返回任何有意义的数据,并且总是抛出异常。</returns>
/// <exception cref="NotImplementedException">始终抛出此异常因为ConvertBack方法在当前版本中没有具体实现。</exception>
public object ConvertBack(object? v,
2025-09-04 22:39:00 +08:00
Type t,
2025-08-20 12:10:13 +08:00
object? p,
CultureInfo c) =>
Binding.DoNothing;
}