24

我正在使用 SSRS reportviewer 使用对象生成报告。在我的程序中,我要求用户输入一串众所周知的颜色,例如"Red", "Blue"等。然后我想生成这种颜色的三种阴影,并使用这种颜色在我的报告中填充面积图。我做所以我改变了颜色的不透明度(alpha)。

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

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

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

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

任何帮助表示赞赏。

4

4 回答 4

32

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

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

使用示例

Color newColor = Color.FromArgb(newAlpha, mycolor);
于 2013-07-19T18:31:16.740 回答
7

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

                     A L P H A    V A L U E
0 [<--- most transparent]  ... ... ... [most opaque --->] 255
于 2017-09-17T17:46:54.417 回答
6

您可以使用此功能进行设置

    static Color SetTransparency(int A, Color color)
    {
        return Color.FromArgb(A, color.R, color.G, color.B);
    }
于 2013-07-19T18:28:41.770 回答
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);
于 2020-01-22T16:51:09.200 回答