在完整的 .NET 框架中,您可以使用 Color.FromArgb() 方法创建具有 alpha 混合的新颜色,如下所示:
Color blended = Color.FromArgb(alpha, color);
或者
Color blended = Color.FromArgb(alpha, red, green , blue);
但是在 Compact Framework(特别是 2.0)中,这些方法都不可用,您只能得到:
Color.FromArgb(int red, int green, int blue);
和
Color.FromArgb(int val);
显然,第一个甚至不允许您输入 alpha 值,但后者的文档显示“val”是一个 32 位 ARGB 值(作为 0xAARRGGBB,而不是标准的 24 位 0xRRGGBB),所以这是有道理的您可以构建 ARGB 值并将其传递给函数。我尝试了以下方法:
private Color FromARGB(byte alpha, byte red, byte green, byte blue)
{
int val = (alpha << 24) | (red << 16) | (green << 8) | blue;
return Color.FromArgb(val);
}
但无论我做什么,alpha 混合永远不会起作用,即使将 alpha 值设置为 0,生成的颜色也总是完全不透明。
有没有人让它在紧凑框架上工作?