フル.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値(標準の24ビット0xRRGGBBではなく0xAARRGGBBとして)であることを示しているので、それは理にかなっています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に設定した場合でも、結果の色は常に完全な不透明度になります。
誰かがこれをCompactFrameworkで動作させるようになりましたか?