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

本文关键字:颜色 透明度 | 更新日期: 2023-09-27 18:24:02

我正在使用SSRS报表查看器来使用对象生成报表。在我的程序中,我要求用户输入一系列常见的颜色,如"Red"、"Blue"等。然后我想生成这种颜色的三种色调,并使用这种颜色填充我的报告中的面积图。我通过更改颜色的不透明度(alpha)来完成这项操作。

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

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

然而,现在我想再生成两种颜色,它们的色调与红色相同,但alpha(不透明度)不同,这样它们看起来更亮,有点像#56FF0000

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

感谢您的帮助。

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

有一个方法可以满足您的需求Color.FromArgb(int-alpha,Color-baseColor)。

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

使用示例

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

您可以使用此功能设置

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

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

                     A L P H A    V A L U E
0 [<--- most transparent]  ... ... ... [most opaque --->] 255
我创建了一个方便的扩展方法。
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);