如何在c#中更改颜色的透明度

时间:2013-07-19 18:25:46

标签: c# reportviewer

我正在使用SSRS reportviewer来生成使用对象的报告。在我的程序中,我要求用户输入一串众所周知的颜色,例如"Red",“Blue"等。我想生成这种颜色的三种色调并使用此颜色在我的报告中填写区域图表。我这样做是为了改变颜色的不透明度(alpha)。

这是我将字符串转换为颜色的代码:

 newitem.ChartColor = "red";
 Color mycolor = Color.FromName(newitem.ChartColor);

但是,现在我想再生成两种颜色与红色相同但不同的alpha(不透明度),以便它们看起来更亮,类似于#56FF0000

我尝试将值传递给Color的A属性,但它是只读的。

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:19)

有一种方法可以完全满足您的需要Color.FromArgb(int alpha, Color baseColor)

有效alpha值为0到255.其中255是最不透明的颜色,0是完全透明的颜色。

使用示例

Color newColor = Color.FromArgb(newAlpha, mycolor);

答案 1 :(得分:4)

您可以使用此功能设置

    static Color SetTransparency(int A, Color color)
    {
        return Color.FromArgb(A, color.R, color.G, color.B);
    }

答案 2 :(得分:4)

我认为这些答案中需要包含的是alpha值表示颜色的透明程度,0表示最透明,255表示最不透明。以下是摘要:

                     A L P H A    V A L U E
0 [<--- most transparent]  ... ... ... [most opaque --->] 255

答案 3 :(得分:1)

我创建了一个方便的扩展方法。

public static class ColorExtensions
{
    ...
    public static Color WithA(this Color color, int newA) => Color.FromArgb(newA,color);
}

用法:

newitem.ChartColor = "red";
Color mycolor = Color.FromName(newitem.ChartColor);

Color myColorAlt1 = myColor.WithA(0x56);
Color myColorAlt2 = myColor.WithA(0x28);

或者,如果您需要的话:

Color mycolor = Color.FromName(newitem.ChartColor).WithA(0x56);