mirror of
https://github.com/OpenLogics/MewtocolNet.git
synced 2025-12-06 03:01:24 +00:00
Move examples from root to /Examples
This commit is contained in:
62
Examples/Examples.WPF/Converters/ColorHashConverter.cs
Normal file
62
Examples/Examples.WPF/Converters/ColorHashConverter.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
|
||||
|
||||
namespace Examples.WPF.Converters;
|
||||
|
||||
[ValueConversion(typeof(bool), typeof(bool))]
|
||||
public class ColorHashConverter : IValueConverter {
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
|
||||
|
||||
var hashCode = value.GetHashCode();
|
||||
var randColor = GenerateRandomVibrantColor(new Random(hashCode));
|
||||
|
||||
System.Windows.Media.Brush outBrush = new System.Windows.Media.SolidColorBrush(new System.Windows.Media.Color {
|
||||
R = randColor.R,
|
||||
G = randColor.G,
|
||||
B = randColor.B,
|
||||
A = 255,
|
||||
});
|
||||
|
||||
return outBrush;
|
||||
|
||||
}
|
||||
|
||||
private Color GenerateRandomVibrantColor(Random random) {
|
||||
|
||||
byte red = (byte)random.Next(256);
|
||||
byte green = (byte)random.Next(256);
|
||||
byte blue = (byte)random.Next(256);
|
||||
|
||||
Color color = Color.FromArgb(255, red, green, blue);
|
||||
|
||||
// Ensure the color is vibrant and colorful
|
||||
while (!IsVibrantColor(color)) {
|
||||
red = (byte)random.Next(256);
|
||||
green = (byte)random.Next(256);
|
||||
blue = (byte)random.Next(256);
|
||||
color = Color.FromArgb(255,red, green, blue);
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
private bool IsVibrantColor(Color color) {
|
||||
|
||||
int minBrightness = 100;
|
||||
int maxBrightness = 200;
|
||||
int minSaturation = 150;
|
||||
|
||||
int brightness = (int)(color.GetBrightness() * 255);
|
||||
int saturation = (int)(color.GetSaturation() * 255);
|
||||
|
||||
return brightness >= minBrightness && brightness <= maxBrightness && saturation >= minSaturation;
|
||||
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user