Sie müssen nicht auf die riesige Windows.Forms
dll nur verweisen, um eine Color
zu erleichtern. In seiner einfachsten Form sind Multiplizieren Sie nur jeden Wert um den gleichen Faktor:
private Color AdjustBrightness(double brightnessFactor)
{
Color originalColour = Color.Red;
Color adjustedColour = Color.FromArgb(originalColour.A,
(int)(originalColour.R * brightnessFactor),
(int)(originalColour.G * brightnessFactor),
(int)(originalColour.B * brightnessFactor));
return adjustedColour;
}
Dies könnte natürlich auf verschiedene Weise verbessert werden (und sollte), aber Sie bekommen die Idee. In der Tat wird dies eine Exception
werfen, wenn ein Wert über 255 geht, aber ich bin sicher, dass Sie dafür sorgen können. Jetzt müssen Sie nur prüfen, welche Art von Brush
Sie aufhellen müssen:
if (brush is SolidColorBrush)
return new SolidColorBrush(AdjustBrightness(((SolidColorBrush)brush).Color));
else if (brush is LinearGradientBrush || brush is RadialGradientBrush)
{
// Go through each `GradientStop` in the `Brush` and brighten its colour
}
Meinst du eine 'System.Windows.Media.Brush' oder' System.Drawing.Brush'? Außerdem würde ich 'System.Drawing.Color.FromArgb() 'betrachten – davidsbro
@davidsbro System.Windows.Media.Brush –
Beachten Sie, dass, wenn es tatsächlich ein' SolidColorBrush' ist, es eine 'Color' Eigenschaft hat. – Benjol