49 lines
2.9 KiB
C#
49 lines
2.9 KiB
C#
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;
|
||
} |