如何调整颜色的亮度?

我想变暗现有的颜色以用于渐变画笔。 请问有人能告诉我该怎么做?

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”。

链接地址: http://www.djcxy.com/p/51803.html

上一篇: How do I adjust the brightness of a color?

下一篇: Windows 7 Taskbar Icons Highlight Color