c# - 将十六进制颜色增加xx%

时间:2017-04-05 11:24:28

标签: c#

我允许我的用户在他们的应用中设置背景颜色(即#D900D9),它存储为字符串。 然后,我想设置一个属性,边界'这将取十六进制值' background'黑暗说20%?(即#770077) 我怎样才能做到这一点?

public string backgroundColor { get; set; }
 public string borderColor
        {
            get
            {
                return backgroundColor + 20%
            } 
        }

2 个答案:

答案 0 :(得分:2)

您需要创建一个Color对象

var yourColor = Color.FromHex(backgroundColor);

然后只考虑RGB值:

var c2 = Color.FromArgb(yourColor.A,
    (int)(yourColor.R * 0.8), (int)(yourColor .G * 0.8), (int)(yourColor.B * 0.8));

(应该使它变暗;或者,例如,* 1.25使其变亮)

致谢:How do I adjust the brightness of a color?(@Marc Gravell)

答案 1 :(得分:0)

public string backgroundColor { get; set; } 
public string borderColor
        {
get
            {
                Color c1 = System.Drawing.ColorTranslator.FromHtml(backgroundColor);
                Color c2 = Color.FromArgb(c1.A,(int)(c1.R * 0.8), (int)(c1.G * 0.8), (int)(c1.B * 0.8));
                return System.Drawing.ColorTranslator.ToHtml(c2);
            } 
}