如何调整颜色的亮度?
我想变暗现有的颜色以用于渐变画笔。 请问有人能告诉我该怎么做?
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 ;
}
作为一种简单的方法,您可以将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));
(这会使它变暗;或者,例如,* 1.25使其变亮)
你也可以尝试使用
ControlPaint.Light(baseColor, percOfLightLight)
ControlPaint.Light
要么
ControlPaint.Dark(baseColor, percOfDarkDark)
ControlPaint.Dark
从RGB转换为HSV(或HSL),然后调整V(或L),然后再转换回来。
虽然System.Drawing.Color
提供了获取色调(H),饱和度(S)和亮度的方法,但它并没有提供很多其他转换方式,但从HSV(或HSV值)创建新实例并不值得注意,但转换非常简单。 维基百科的文章提供了体面的支持,从这里开始:“HSL和HSV”。