Files
ShrlAlgoToolkit/Melskin/Converters/Internal/HueToBrushConverter.cs
2026-02-17 22:17:13 +08:00

49 lines
2.9 KiB
C#
Raw Permalink 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;
using Melskin.Controls;
namespace Melskin.Converters.Internal;
/// <summary>
/// 将色相值转换为画刷的转换器。此转换器实现了IValueConverter接口用于在绑定过程中将int类型的色相值转换成相应的SolidColorBrush。
/// 转换方法使用HsvToRgb静态方法来根据给定的色相、饱和度固定为1.0和亮度固定为1.0生成颜色并创建一个SolidColorBrush实例。
/// 如果输入值不是int类型则返回一个透明的画刷。
/// </summary>
internal class HueToBrushConverter : IValueConverter
{
public static HueToBrushConverter Instance { get; set; }= new();
/// <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,
Type t,
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,
Type t,
object? p,
CultureInfo c) =>
Binding.DoNothing;
}