В платформе Full .NET вы можете использовать метод Color.FromArgb () для создания нового цвета с альфа-смешиванием, например:
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);
Первый, очевидно, даже не позволяет вводить альфа-значение, но документация для последнего показывает, что «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);
}
Но что бы я ни делал, альфа-смешение никогда не работает, результирующий цвет всегда с полной непрозрачностью, даже при установке значения альфа на 0.
Кто-нибудь заставил это работать на Compact Framework?