我有一个Color,我有一个方法应该返回该颜色的更"透明"版本.我尝试了以下方法:
public static Color SetTransparency(int A, Color color)
{
return Color.FromArgb(A, color.R, color.G, color.B);
}
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,无论是什么A,返回Color的透明度水平都不会改变.
任何的想法?
Jon*_*eet 13
嗯,它看起来没问题,除了你使用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, Color.Black);
Console.WriteLine(halfTransparent.A); // Prints 127
}
}
Run Code Online (Sandbox Code Playgroud)
没有惊喜.如果你提供一个简短但完整的程序来证明你所遇到的确切问题,那将会非常有帮助.你确定无论你做什么颜色甚至支持透明度?
请注意,此方法实际上已经存在Color.FromArgb(int, Color).
只需使用FromArgb的正确重载
var color = Color.FromArgb(50, Color.Red);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29641 次 |
| 最近记录: |