我有一个 Color
,我有一个方法应该返回该颜色的更“透明”版本。我尝试了以下方法:
public static Color SetTransparency(int A, Color color)
{
return Color.FromArgb(A, color.R, color.G, color.B);
}
但出于某种原因,无论 A
是什么,返回的 Color
的透明度级别都不会改变。
有什么想法吗?
最佳答案
嗯,我觉得没问题,只是你使用的是 Color.R
(等)而不是 color.R
- 你确定你真的使用返回的 Color
而不是假设它会改变现有的颜色?您如何确定“透明度级别”不会改变?
这是一个示例,显示返回颜色中的 alpha 值是真正正确的:
using System;
using System.Drawing;
class Test
{
static Color SetTransparency(int A, Color color)
{
return Color.FromArgb(A, color.R, color.G, color.B);
}
static void Main()
{
Color halfTransparent = SetTransparency(127, Colors.Black);
Console.WriteLine(halfTransparent.A); // Prints 127
}
}
没有惊喜。如果您提供一个简短但完整的程序来演示您遇到的确切问题,那将非常有帮助。您确定无论您对颜色做什么都支持透明度吗?
请注意,此方法实际上已经存在为 Color.FromArgb(int, Color)
.
关于c# - 设置透明色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020877/