From d8d4a632b9df420c9d0adfa872b1e7407105dc22 Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Sat, 13 Nov 2010 16:25:18 +0000 Subject: [PATCH] ColorPicker: completely re-wrote the color picker control. It now no longer has the color canvas and sliders to choose colors, (it will eventually in advanced mode). It now has 140 color squares of all available KnownColors, it also has a standard color palette of ten commonly used colors, and keeps track of recently used colors. You can supply your own custom available color and standard color palettes by setting the AvailableColors and StandardColors properties. --- .../ColorPicker/ColorItem.cs | 17 + .../ColorPicker/ColorPicker.cs | 379 +++++------------- .../ColorPicker/ColorSpectrumSlider.cs | 85 ---- .../ColorPicker/ColorUtilities.cs | 156 ------- .../ColorPicker/HsvColor.cs | 18 - .../WPFToolkit.Extended/Themes/Generic.xaml | 364 ++++++----------- .../WPFToolkit.Extended.csproj | 6 +- 7 files changed, 222 insertions(+), 803 deletions(-) create mode 100644 ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs delete mode 100644 ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs delete mode 100644 ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorUtilities.cs delete mode 100644 ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs new file mode 100644 index 00000000..0f846a9a --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs @@ -0,0 +1,17 @@ +using System; +using System.Windows.Media; + +namespace Microsoft.Windows.Controls +{ + public class ColorItem + { + public Color Color { get; set; } + public string Name { get; set; } + + public ColorItem(Color color, string name) + { + Color = color; + Name = name; + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs index d87447d8..a3347b2c 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs @@ -1,238 +1,98 @@ using System; using System.Windows; using System.Windows.Controls; -using System.Windows.Input; using System.Windows.Media; using System.Windows.Controls.Primitives; +using System.Collections.ObjectModel; +using System.Reflection; namespace Microsoft.Windows.Controls { public class ColorPicker : Control { - #region Private Members + #region Members ToggleButton _colorPickerToggleButton; Popup _colorPickerCanvasPopup; - Button _okButton; - private TranslateTransform _colorShadeSelectorTransform = new TranslateTransform(); - private Canvas _colorShadingCanvas; - private Canvas _colorShadeSelector; - private ColorSpectrumSlider _spectrumSlider; - private Point? _currentColorPosition; - private Color _currentColor = Colors.White; - private bool _isLoaded; + ListBox _availableColors; + ListBox _standardColors; + ListBox _recentColors; - #endregion //Private Members + #endregion //Members - #region Constructors + #region Properties - static ColorPicker() - { - DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); - } + #region AvailableColors - public ColorPicker() + public static readonly DependencyProperty AvailableColorsProperty = DependencyProperty.Register("AvailableColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(CreateAvailableColors())); + public ObservableCollection AvailableColors { - + get { return (ObservableCollection)GetValue(AvailableColorsProperty); } + set { SetValue(AvailableColorsProperty, value); } } - #endregion //Constructors + #endregion //AvailableColors - #region Properties + #region RecenColors - public static readonly DependencyProperty CurrentColorProperty = DependencyProperty.Register("CurrentColor", typeof(Color), typeof(ColorPicker), new PropertyMetadata(Colors.White)); - public Color CurrentColor + public static readonly DependencyProperty RecentColorsProperty = DependencyProperty.Register("RecentColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(null)); + public ObservableCollection RecentColors { - get { return (Color)GetValue(CurrentColorProperty); } - set { SetValue(CurrentColorProperty, value); } + get { return (ObservableCollection)GetValue(RecentColorsProperty); } + set { SetValue(RecentColorsProperty, value); } } + #endregion //RecentColors + #region SelectedColor - public static readonly DependencyProperty SelectedColorProperty = DependencyProperty.Register("SelectedColor", typeof(Color), typeof(ColorPicker), new FrameworkPropertyMetadata(Colors.White, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(SelectedColorPropertyChanged))); + public static readonly DependencyProperty SelectedColorProperty = DependencyProperty.Register("SelectedColor", typeof(Color), typeof(ColorPicker), new FrameworkPropertyMetadata(Colors.White, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnSelectedColorPropertyChanged))); public Color SelectedColor { get { return (Color)GetValue(SelectedColorProperty); } set { SetValue(SelectedColorProperty, value); } } - private static void SelectedColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + private static void OnSelectedColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ColorPicker colorPicker = (ColorPicker)d; - colorPicker.SetSelectedColor((Color)e.NewValue); - } - - #endregion //SelectedColor - - #region ScRGB - - #region ScA - - public static readonly DependencyProperty ScAProperty = DependencyProperty.Register("ScA", typeof(float), typeof(ColorPicker), new PropertyMetadata((float)1, new PropertyChangedCallback(OnScAPropertyChangedChanged))); - public float ScA - { - get { return (float)GetValue(ScAProperty); } - set { SetValue(ScAProperty, value); } - } - - private static void OnScAPropertyChangedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - ColorPicker c = (ColorPicker)d; - c.SetScA((float)e.NewValue); - } - - protected virtual void SetScA(float newValue) - { - _currentColor.ScA = newValue; - A = _currentColor.A; - CurrentColor = _currentColor; - HexadecimalString = _currentColor.ToString(); - } - - #endregion //ScA - - #region ScR - - public static readonly DependencyProperty ScRProperty = DependencyProperty.Register("ScR", typeof(float), typeof(ColorPicker), new PropertyMetadata((float)1, new PropertyChangedCallback(OnScRPropertyChanged))); - public float ScR - { - get { return (float)GetValue(ScRProperty); } - set { SetValue(RProperty, value); } - } - - private static void OnScRPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - - } - - #endregion //ScR - - #region ScG - - public static readonly DependencyProperty ScGProperty = DependencyProperty.Register("ScG", typeof(float), typeof(ColorPicker), new PropertyMetadata((float)1, new PropertyChangedCallback(OnScGPropertyChanged))); - public float ScG - { - get { return (float)GetValue(ScGProperty); } - set { SetValue(GProperty, value); } - } - - private static void OnScGPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - - } - - #endregion //ScG - - #region ScB - - public static readonly DependencyProperty ScBProperty = DependencyProperty.Register("ScB", typeof(float), typeof(ColorPicker), new PropertyMetadata((float)1, new PropertyChangedCallback(OnScBPropertyChanged))); - public float ScB - { - get { return (float)GetValue(BProperty); } - set { SetValue(BProperty, value); } - } - - private static void OnScBPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - + if (colorPicker != null) + colorPicker.SelectedColorChanged((Color)e.OldValue, (Color)e.NewValue); } - #endregion //ScB - - #endregion //ScRGB - - #region RGB - - #region A - - public static readonly DependencyProperty AProperty = DependencyProperty.Register("A", typeof(byte), typeof(ColorPicker), new PropertyMetadata((byte)255, new PropertyChangedCallback(OnAPropertyChanged))); - public byte A + private void SelectedColorChanged(Color oldValue, Color newValue) { - get { return (byte)GetValue(AProperty); } - set { SetValue(AProperty, value); } + } - private static void OnAPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - ColorPicker c = (ColorPicker)d; - c.SetA((byte)e.NewValue); - } - - protected virtual void SetA(byte newValue) - { - _currentColor.A = newValue; - SetValue(CurrentColorProperty, _currentColor); - } - - #endregion //A - - #region R - - public static readonly DependencyProperty RProperty = DependencyProperty.Register("R", typeof(byte), typeof(ColorPicker), new PropertyMetadata((byte)255, new PropertyChangedCallback(OnRPropertyChanged))); - public byte R - { - get { return (byte)GetValue(RProperty); } - set { SetValue(RProperty, value); } - } - - private static void OnRPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - - } - - #endregion //R - - #region G - - public static readonly DependencyProperty GProperty = DependencyProperty.Register("G", typeof(byte), typeof(ColorPicker), new PropertyMetadata((byte)255, new PropertyChangedCallback(OnGPropertyChanged))); - public byte G - { - get { return (byte)GetValue(GProperty); } - set { SetValue(GProperty, value); } - } - - private static void OnGPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - - } - - #endregion //G - - #region B + #endregion //SelectedColor - public static readonly DependencyProperty BProperty = DependencyProperty.Register("B", typeof(byte), typeof(ColorPicker), new PropertyMetadata((byte)255, new PropertyChangedCallback(OnBPropertyChanged))); - public byte B - { - get { return (byte)GetValue(BProperty); } - set { SetValue(BProperty, value); } - } + #region StandardColors - private static void OnBPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + public static readonly DependencyProperty StandardColorsProperty = DependencyProperty.Register("StandardColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(CreateStandardColors())); + public ObservableCollection StandardColors { - + get { return (ObservableCollection)GetValue(StandardColorsProperty); } + set { SetValue(StandardColorsProperty, value); } } - #endregion //B + #endregion //StandardColors - #endregion //RGB + #endregion //Properties - #region HexadecimalString + #region Constructors - public static readonly DependencyProperty HexadecimalStringProperty = DependencyProperty.Register("HexadecimalString", typeof(string), typeof(ColorPicker), new PropertyMetadata("#FFFFFFFF", new PropertyChangedCallback(OnHexadecimalStringPropertyChanged))); - public string HexadecimalString + static ColorPicker() { - get { return (string)GetValue(HexadecimalStringProperty); } - set { SetValue(HexadecimalStringProperty, value); } + DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); } - private static void OnHexadecimalStringPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + public ColorPicker() { - + RecentColors = new ObservableCollection(); } - #endregion //HexadecimalString - - #endregion //Properties + #endregion //Constructors #region Base Class Overrides @@ -243,81 +103,41 @@ namespace Microsoft.Windows.Controls _colorPickerToggleButton = (ToggleButton)GetTemplateChild("PART_ColorPickerToggleButton"); _colorPickerToggleButton.Click += ColorPickerToggleButton_Clicked; - _colorPickerCanvasPopup = (Popup)GetTemplateChild("PART_ColorPickerCanvasPopup"); - - _colorShadingCanvas = (Canvas)GetTemplateChild("PART_ColorShadingCanvas"); - _colorShadingCanvas.MouseLeftButtonDown += ColorShadingCanvas_MouseLeftButtonDown; - _colorShadingCanvas.MouseMove += ColorShadingCanvas_MouseMove; - _colorShadingCanvas.SizeChanged += ColorShadingCanvas_SizeChanged; + _colorPickerCanvasPopup = (Popup)GetTemplateChild("PART_ColorPickerPalettePopup"); - _colorShadeSelector = (Canvas)GetTemplateChild("PART_ColorShadeSelector"); - _colorShadeSelector.RenderTransform = _colorShadeSelectorTransform; + _availableColors = (ListBox)GetTemplateChild("PART_AvailableColors"); + _availableColors.SelectionChanged += Color_SelectionChanged; - _spectrumSlider = (ColorSpectrumSlider)GetTemplateChild("PART_SpectrumSlider"); - _spectrumSlider.ValueChanged += SpectrumSlider_ValueChanged; + _standardColors = (ListBox)GetTemplateChild("PART_StandardColors"); + _standardColors.SelectionChanged += Color_SelectionChanged; - _okButton = (Button)GetTemplateChild("PART_OkButton"); - _okButton.Click += OkButton_Click; - - SetSelectedColor(SelectedColor); + _recentColors = (ListBox)GetTemplateChild("PART_RecentColors"); + _recentColors.SelectionChanged += Color_SelectionChanged; } #endregion //Base Class Overrides #region Event Handlers - void ColorShadingCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - Point p = e.GetPosition(_colorShadingCanvas); - UpdateColorShadeSelectorPositionAndCalculateColor(p, true); - } - - void ColorShadingCanvas_MouseMove(object sender, MouseEventArgs e) - { - if (e.LeftButton == MouseButtonState.Pressed) - { - Point p = e.GetPosition(_colorShadingCanvas); - UpdateColorShadeSelectorPositionAndCalculateColor(p, true); - Mouse.Synchronize(); - } - } - - void ColorShadingCanvas_SizeChanged(object sender, SizeChangedEventArgs e) + void ColorPickerToggleButton_Clicked(object sender, RoutedEventArgs e) { - if (_currentColorPosition != null) - { - Point _newPoint = new Point - { - X = ((Point)_currentColorPosition).X * e.NewSize.Width, - Y = ((Point)_currentColorPosition).Y * e.NewSize.Height - }; - - UpdateColorShadeSelectorPositionAndCalculateColor(_newPoint, false); - } + _colorPickerCanvasPopup.IsOpen = _colorPickerToggleButton.IsChecked ?? false; } - void SpectrumSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) + private void Color_SelectionChanged(object sender, SelectionChangedEventArgs e) { - if (_currentColorPosition != null) - { - CalculateColor((Point)_currentColorPosition); - } - } + ListBox lb = (ListBox)sender; - void OkButton_Click(object sender, RoutedEventArgs e) - { - if (_colorPickerCanvasPopup.IsOpen || _colorPickerToggleButton.IsChecked == true) + if (e.AddedItems.Count > 0) { + var colorItem = (ColorItem)e.AddedItems[0]; + SelectedColor = colorItem.Color; + UpdateRecentColors(colorItem); CloseColorPicker(); - SelectedColor = CurrentColor; + lb.SelectedIndex = -1; //for now I don't care about keeping track of the selected color } } - void ColorPickerToggleButton_Clicked(object sender, RoutedEventArgs e) - { - _colorPickerCanvasPopup.IsOpen = _colorPickerToggleButton.IsChecked ?? false; - } - #endregion //Event Handlers #region Methods @@ -328,67 +148,48 @@ namespace Microsoft.Windows.Controls _colorPickerCanvasPopup.IsOpen = false; } - private void SetSelectedColor(Color theColor) + private void UpdateRecentColors(ColorItem colorItem) { - _currentColor = theColor; - SetValue(AProperty, _currentColor.A); - SetValue(RProperty, _currentColor.R); - SetValue(GProperty, _currentColor.G); - SetValue(BProperty, _currentColor.B); - UpdateColorShadeSelectorPosition(_currentColor); + if (!RecentColors.Contains(colorItem)) + RecentColors.Add(colorItem); + + if (RecentColors.Count > 10) //don't allow more than ten, maybe make a property that can be set by the user. + RecentColors.RemoveAt(0); } - private void UpdateColorShadeSelectorPositionAndCalculateColor(Point p, bool calculateColor) + private static ObservableCollection CreateStandardColors() { - if (p.Y < 0) - p.Y = 0; - - if (p.X < 0) - p.X = 0; - - if (p.X > _colorShadingCanvas.ActualWidth) - p.X = _colorShadingCanvas.ActualWidth; - - if (p.Y > _colorShadingCanvas.ActualHeight) - p.Y = _colorShadingCanvas.ActualHeight; - - _colorShadeSelectorTransform.X = p.X - (_colorShadeSelector.Width / 2); - _colorShadeSelectorTransform.Y = p.Y - (_colorShadeSelector.Height / 2); - - p.X = p.X / _colorShadingCanvas.ActualWidth; - p.Y = p.Y / _colorShadingCanvas.ActualHeight; - - _currentColorPosition = p; - - if (calculateColor) - CalculateColor(p); + ObservableCollection _standardColors = new ObservableCollection(); + _standardColors.Add(new ColorItem(Colors.White, "White")); + _standardColors.Add(new ColorItem(Colors.Gray, "Gray")); + _standardColors.Add(new ColorItem(Colors.Black, "Black")); + _standardColors.Add(new ColorItem(Colors.Red, "Red")); + _standardColors.Add(new ColorItem(Colors.Green, "Geen")); + _standardColors.Add(new ColorItem(Colors.Blue, "Blue")); + _standardColors.Add(new ColorItem(Colors.Yellow, "Yellow")); + _standardColors.Add(new ColorItem(Colors.Orange, "Orange")); + _standardColors.Add(new ColorItem(Colors.Brown, "Brown")); + _standardColors.Add(new ColorItem(Colors.Purple, "Purple")); + return _standardColors; } - private void UpdateColorShadeSelectorPosition(Color color) + private static ObservableCollection CreateAvailableColors() { - if (_spectrumSlider == null || _colorShadingCanvas == null) - return; - - _currentColorPosition = null; + ObservableCollection _standardColors = new ObservableCollection(); - HsvColor hsv = ColorUtilities.ConvertRgbToHsv(color.R, color.G, color.B); - _spectrumSlider.Value = hsv.H; - - Point p = new Point(hsv.S, 1 - hsv.V); - - _currentColorPosition = p; - - _colorShadeSelectorTransform.X = (p.X * _colorShadingCanvas.Width) - 5; - _colorShadeSelectorTransform.Y = (p.Y * _colorShadingCanvas.Height) - 5; - } + PropertyInfo[] properties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public); + foreach (PropertyInfo info in properties) + { + if (String.Compare(info.Name, "Transparent", false) != 0) + { + Color c = (Color)info.GetValue(typeof(Colors), null); + var colorItem = new ColorItem(c, info.Name); + if (!_standardColors.Contains(colorItem)) + _standardColors.Add(colorItem); + } + } - private void CalculateColor(Point p) - { - HsvColor hsv = new HsvColor(360 - _spectrumSlider.Value, 1, 1) { S = p.X, V = 1 - p.Y }; - _currentColor = ColorUtilities.ConvertHsvToRgb(hsv.H, hsv.S, hsv.V); ; - _currentColor.ScA = ScA; - CurrentColor = _currentColor; - HexadecimalString = _currentColor.ToString(); + return _standardColors; } #endregion //Methods diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs deleted file mode 100644 index c4eac2d8..00000000 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Media; -using System.Windows.Shapes; - -namespace Microsoft.Windows.Controls -{ - internal class ColorSpectrumSlider : Slider - { - #region Private Members - - private Rectangle _spectrumDisplay; - private LinearGradientBrush _pickerBrush; - - #endregion //Private Members - - #region Constructors - - static ColorSpectrumSlider() - { - DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorSpectrumSlider), new FrameworkPropertyMetadata(typeof(ColorSpectrumSlider))); - } - - #endregion //Constructors - - #region Dependency Properties - - public static readonly DependencyProperty SelectedColorProperty = DependencyProperty.Register("SelectedColor", typeof(Color), typeof(ColorSpectrumSlider), new PropertyMetadata(System.Windows.Media.Colors.Transparent)); - public Color SelectedColor - { - get { return (Color)GetValue(SelectedColorProperty); } - set { SetValue(SelectedColorProperty, value); } - } - - #endregion //Dependency Properties - - #region Base Class Overrides - - public override void OnApplyTemplate() - { - base.OnApplyTemplate(); - - _spectrumDisplay = (Rectangle)GetTemplateChild("PART_SpectrumDisplay"); - CreateSpectrum(); - OnValueChanged(Double.NaN, Value); - } - - protected override void OnValueChanged(double oldValue, double newValue) - { - base.OnValueChanged(oldValue, newValue); - - Color color = ColorUtilities.ConvertHsvToRgb(360 - newValue, 1, 1); - SelectedColor = color; - } - - #endregion //Base Class Overrides - - #region Methods - - private void CreateSpectrum() - { - _pickerBrush = new LinearGradientBrush(); - _pickerBrush.StartPoint = new Point(0.5, 0); - _pickerBrush.EndPoint = new Point(0.5, 1); - _pickerBrush.ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation; - - List colorsList = ColorUtilities.GenerateHsvSpectrum(); - - double stopIncrement = (double)1 / colorsList.Count; - - int i; - for (i = 0; i < colorsList.Count; i++) - { - _pickerBrush.GradientStops.Add(new GradientStop(colorsList[i], i * stopIncrement)); - } - - _pickerBrush.GradientStops[i - 1].Offset = 1.0; - _spectrumDisplay.Fill = _pickerBrush; - } - - #endregion //Methods - } -} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorUtilities.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorUtilities.cs deleted file mode 100644 index e621c22b..00000000 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorUtilities.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Media; - -namespace Microsoft.Windows.Controls -{ - internal static class ColorUtilities - { - /// - /// Converts an RGB color to an HSV color. - /// - /// - /// - /// - /// - public static HsvColor ConvertRgbToHsv(int r, int b, int g) - { - double delta, min; - double h = 0, s, v; - - min = Math.Min(Math.Min(r, g), b); - v = Math.Max(Math.Max(r, g), b); - delta = v - min; - - if (v == 0.0) - { - s = 0; - } - else - s = delta / v; - - if (s == 0) - h = 0.0; - - else - { - if (r == v) - h = (g - b) / delta; - else if (g == v) - h = 2 + (b - r) / delta; - else if (b == v) - h = 4 + (r - g) / delta; - - h *= 60; - if (h < 0.0) - h = h + 360; - - } - - return new HsvColor { H = h, S = s, V = v / 255 }; - } - - /// - /// Converts an HSV color to an RGB color. - /// - /// - /// - /// - /// - public static Color ConvertHsvToRgb(double h, double s, double v) - { - double r = 0, g = 0, b = 0; - - if (s == 0) - { - r = v; - g = v; - b = v; - } - else - { - int i; - double f, p, q, t; - - if (h == 360) - h = 0; - else - h = h / 60; - - i = (int)Math.Truncate(h); - f = h - i; - - p = v * (1.0 - s); - q = v * (1.0 - (s * f)); - t = v * (1.0 - (s * (1.0 - f))); - - switch (i) - { - case 0: - { - r = v; - g = t; - b = p; - break; - } - case 1: - { - r = q; - g = v; - b = p; - break; - } - case 2: - { - r = p; - g = v; - b = t; - break; - } - case 3: - { - r = p; - g = q; - b = v; - break; - } - case 4: - { - r = t; - g = p; - b = v; - break; - } - default: - { - r = v; - g = p; - b = q; - break; - } - } - - } - - return Color.FromArgb(255, (byte)(r * 255), (byte)(g * 255), (byte)(b * 255)); - } - - /// - /// Generates a list of colors with hues ranging from 0 360 and a saturation and value of 1. - /// - /// - public static List GenerateHsvSpectrum() - { - List colorsList = new List(8); - - for (int i = 0; i < 29; i++) - { - colorsList.Add(ColorUtilities.ConvertHsvToRgb(i * 12, 1, 1)); - } - - colorsList.Add(ColorUtilities.ConvertHsvToRgb(0, 1, 1)); - - return colorsList; - } - } -} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs deleted file mode 100644 index eed5c3bd..00000000 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace Microsoft.Windows.Controls -{ - internal struct HsvColor - { - public double H; - public double S; - public double V; - - public HsvColor(double h, double s, double v) - { - H = h; - S = s; - V = v; - } - } -} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml index db86f313..279d641a 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml @@ -582,127 +582,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj index c254d8e1..8975267a 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj @@ -68,14 +68,12 @@ - - - - + +