Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ColorToGradient : ConverterBase
- {
- private Color MainColor { get; set; }
- public float Factor { get; set; } = -0.3f;
- public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- MainColor = value is Color color ? color : (Color)ColorConverter.ConvertFromString($"{value}");
- var secondColor = ChangeColorBrightness(MainColor, Factor);
- var stops = new GradientStopCollection
- {
- new GradientStop(MainColor, 0),
- new GradientStop(secondColor, 1)
- };
- return new LinearGradientBrush
- {
- StartPoint = new Point(.5, 0),
- EndPoint = new Point(.5, 1),
- GradientStops = stops
- };
- }
- private static Color ChangeColorBrightness(Color color, float correctionFactor)
- {
- float red = color.R;
- float green = color.G;
- float blue = color.B;
- if (correctionFactor < 0)
- {
- correctionFactor = 1 + correctionFactor;
- red *= correctionFactor;
- green *= correctionFactor;
- blue *= correctionFactor;
- }
- else
- {
- red = (255 - red) * correctionFactor + red;
- green = (255 - green) * correctionFactor + green;
- blue = (255 - blue) * correctionFactor + blue;
- }
- return Color.FromArgb(color.A, (byte)red, (byte)green, (byte)blue);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement