Files
ShrlAlgoToolkit/WPFluent/Converters/HsbToColorConverter.cs

42 lines
1.2 KiB
C#
Raw Normal View History


2024-09-22 11:05:41 +08:00
using System;
2025-04-24 20:56:44 +08:00
using System.Windows.Data;
2024-09-22 11:05:41 +08:00
2025-04-24 20:56:44 +08:00
using WPFluent.Controls;
using WPFluent.Extensions;
namespace WPFluent.Converters;
2024-09-22 11:05:41 +08:00
/// <summary>
/// Converts HSB color values to SolidColorBrush and vice versa. Supports single and multi-value conversions.
/// </summary>
2025-04-24 20:56:44 +08:00
internal class HsbToColorConverter : IValueConverter, IMultiValueConverter
2024-09-22 11:05:41 +08:00
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
2025-04-24 20:56:44 +08:00
if (value is Hsb hsb)
return new SolidColorBrush(hsb.ToColor());
2024-09-22 11:05:41 +08:00
return Binding.DoNothing;
}
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var h = (double)values[0];
var s = (double)values[1];
var b = (double)values[2];
return new SolidColorBrush(new Hsb(h, s, b).ToColor());
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
2024-09-22 11:05:41 +08:00
{
2025-04-24 20:56:44 +08:00
if (value is SolidColorBrush brush)
return brush.Color.ToHsb();
return Binding.DoNothing;
2024-09-22 11:05:41 +08:00
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{ throw new NotImplementedException(); }
2024-09-22 11:05:41 +08:00
}