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