如何在c#中更改颜色的透明度
本文关键字:颜色 透明度 | 更新日期: 2023-09-27 18:24:02
我正在使用SSRS报表查看器来使用对象生成报表。在我的程序中,我要求用户输入一系列常见的颜色,如"Red"
、"Blue"
等。然后我想生成这种颜色的三种色调,并使用这种颜色填充我的报告中的面积图。我通过更改颜色的不透明度(alpha)来完成这项操作。
这是我将字符串转换为颜色的代码:
newitem.ChartColor = "red";
Color mycolor = Color.FromName(newitem.ChartColor);
然而,现在我想再生成两种颜色,它们的色调与红色相同,但alpha(不透明度)不同,这样它们看起来更亮,有点像#56FF0000
我尝试将一个值传递给Color的A
属性,但是它是只读的。
感谢您的帮助。
有一个方法可以满足您的需求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);