C#:根据系统颜色创建更亮/更暗的颜色

重复

如何调整颜色的亮度?
如何确定给定颜色的较暗或较浅的颜色变体?
以编程方式减轻颜色


说我有

var c = Color.Red;

现在我想创建一个比这个颜色更亮或更暗的新Color 。 我怎么做,没有太多的麻烦?


ControlPaint.Light .Dark .DarkDark等

Color lightRed = ControlPaint.Light( Color.Red );

我最近在这里发表了博客 。 主要想法是对每个颜色分量应用给定的校正因子。 以下静态方法使用指定的校正因子修改给定颜色的亮度,并生成该颜色的较暗或较亮的变体:

/// <summary>
/// Creates color with corrected brightness.
/// </summary>
/// <param name="color">Color to correct.</param>
/// <param name="correctionFactor">The brightness correction factor. Must be between -1 and 1. 
/// Negative values produce darker colors.</param>
/// <returns>
/// Corrected <see cref="Color"/> structure.
/// </returns>
public static Color ChangeColorBrightness(Color color, float correctionFactor)
{
    float red = (float)color.R;
    float green = (float)color.G;
    float blue = (float)color.B;

    if (correctionFactor < 0)
    {
        correctionFactor = 1 + correctionFactor;
        red *= correctionFactor;
        green *= correctionFactor;
        blue *= correctionFactor;
    }
    else
    {
        red = (255 - red) * correctionFactor + red;
        green = (255 - green) * correctionFactor + green;
        blue = (255 - blue) * correctionFactor + blue;
    }

    return Color.FromArgb(color.A, (int)red, (int)green, (int)blue);
}

您也可以使用Lerp函数来执行此操作。 XNA中有一个,但很容易写出自己的。

查看我对C#实现的类似问题的回答。

该功能可以让你做到这一点:

// make red 50% lighter:
Color.Red.Lerp( Color.White, 0.5 );

// make red 75% darker:
Color.Red.Lerp( Color.Black, 0.75 );

// make white 10% bluer:
Color.White.Lerp( Color.Blue, 0.1 );
链接地址: http://www.djcxy.com/p/87397.html

上一篇: C#: Create a lighter/darker color based on a system color

下一篇: Programmatically Lighten a Color