c# - subir - ¿Cómo ajusto el brillo de un color?
descargar controlador de brillo para windows 10 (6)
Me gustaría oscurecer un color existente para usarlo en un pincel degradado. ¿Alguien podría decirme cómo hacer esto por favor?
C #, .net 2.0, GDI +
Color AdjustBrightness(Color c1, float factor)
{
float r = ((c1.R * factor) > 255) ? 255 : (c1.R * factor);
float g = ((c1.G * factor) > 255) ? 255 : (c1.G * factor);
float b = ((c1.B * factor) > 255) ? 255 : (c1.B * factor);
Color c = Color.FromArgb(c1.A,(int)r, (int)g, (int)b);
return c ;
}
Aquí hay un código C # para las conversiones que Richard mencionó:
Como un enfoque simple, puede simplemente factorizar los valores RGB:
Color c1 = Color.Red;
Color c2 = Color.FromArgb(c1.A,
(int)(c1.R * 0.8), (int)(c1.G * 0.8), (int)(c1.B * 0.8));
(que debería oscurecerlo, o, por ejemplo, * 1.25 para iluminarlo)
Convierta de RGB a HSV (o HSL), luego ajuste V (o L) hacia abajo y luego vuelva a convertir.
Si bien System.Drawing.Color
proporciona métodos para obtener el tono (H), la saturación (S) y el brillo, no proporciona muchas conversiones, nada notable para crear una nueva instancia a partir de HSV (o valores de HSV), pero La conversión es bastante simple de implementar. Los artículos de wikipedia dan una cobertura decente, comenzando aquí: " HSL y HSV ".
Debe mantener un registro de que el valor no se extiende por debajo de 0 o por encima de 255
El mejor enfoque es utilizar Math.Max / Math.MIn
dim newValue as integer = ...
''correct value if it is below 0 or above 255
newValue = Math.Max(Math.Min(newValue,255),0)
Mientras que los métodos antes mencionados oscurecen el color, pero ajustan el tono de manera tal que el resultado no se ve muy bien. La mejor respuesta es usar la clase HSLColor de Rich Newman y ajustar la luminosidad.
public Color Darken(Color color, double darkenAmount) {
HSLColor hslColor = new HSLColor(color);
hslColor.Luminosity *= darkenAmount; // 0 to 1
return hslColor;
}
También puedes intentar usar
ControlPaint.Light(baseColor, percOfLightLight)
o
ControlPaint.Dark(baseColor, percOfDarkDark)