C# で高速な透過性クラスを作成しようとしています。GDI32 に透明な PNG を取得して alphaBlend で使用するにはどうすればよいですか?
getHbitmap/selectObject を介して直接配置しようとしましたが、一時的な DC で setPixel を使用してペイントしようとしましたが、すべて役に立ちませんでした。
C# で高速な透過性クラスを作成しようとしています。GDI32 に透明な PNG を取得して alphaBlend で使用するにはどうすればよいですか?
getHbitmap/selectObject を介して直接配置しようとしましたが、一時的な DC で setPixel を使用してペイントしようとしましたが、すべて役に立ちませんでした。
私が見つけた結果 (眠れぬ夜の後) では、GDI32 に透過性を持たせる最も簡単な方法は、GetHbitmap() で Color.Black を設定することです。このような:
using (Bitmap tBMP = new Bitmap(@"myBitmap.png"))
{
BMPObject = tBMP.GetHbitmap(Color.Black);
sz = tBMP.Size;
}
黒以外の色は、透過領域の予期しない色に色合いを与えます。これで、C# での高速なアルファ ブレンディングという結果に非常に満足しています。