Advertisement
Guest User

Untitled

a guest
Jun 24th, 2020
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.63 KB | None | 0 0
  1.     class ColorToGradient : ConverterBase
  2.     {
  3.         private Color MainColor { get; set; }
  4.         public float Factor { get; set; } = -0.3f;
  5.  
  6.         public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  7.         {
  8.             MainColor = value is Color color ? color : (Color)ColorConverter.ConvertFromString($"{value}");
  9.  
  10.             var secondColor = ChangeColorBrightness(MainColor, Factor);
  11.  
  12.             var stops = new GradientStopCollection
  13.             {
  14.                 new GradientStop(MainColor, 0),
  15.                 new GradientStop(secondColor, 1)
  16.             };
  17.  
  18.             return new LinearGradientBrush
  19.             {
  20.                 StartPoint = new Point(.5, 0),
  21.                 EndPoint = new Point(.5, 1),
  22.                 GradientStops = stops
  23.             };
  24.         }
  25.  
  26.         private static Color ChangeColorBrightness(Color color, float correctionFactor)
  27.         {
  28.             float red = color.R;
  29.             float green = color.G;
  30.             float blue = color.B;
  31.  
  32.             if (correctionFactor < 0)
  33.             {
  34.                 correctionFactor = 1 + correctionFactor;
  35.                 red *= correctionFactor;
  36.                 green *= correctionFactor;
  37.                 blue *= correctionFactor;
  38.             }
  39.             else
  40.             {
  41.                 red = (255 - red) * correctionFactor + red;
  42.                 green = (255 - green) * correctionFactor + green;
  43.                 blue = (255 - blue) * correctionFactor + blue;
  44.             }
  45.  
  46.             return Color.FromArgb(color.A, (byte)red, (byte)green, (byte)blue);
  47.         }
  48.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement