透明な画像を描く方法を尋ねる多くの質問を見てきましたが、私の場合はまったく逆です。をTPicture
含む任意のファイルタイプをロードする場所がありますPNG
。次に、 aのキャンバスを直接読んTPicture.Graphic
で呼び出します。ただし、画像が描画されると、元の画像の透明度が引き継がれます。Draw
TBitmap
PNG
現在のコードは非常に単純です...
MyPicture.LoadFromFile(SomeFilename);
MyBitmap.Canvas.StretchDraw(SomeRect, MyPicture.Graphic);
問題は、私が描画しているキャンバスに既に画像があり、この PNG がその一部に描画されていることです。PNG の背景が透明な場合、通常は白く表示されます。ただし、透明なグラフィックをキャンバスに直接描画しているため、それらの領域は透明に保たれます。
PNG
キャンバスの描画方法のみを使用して、元の透明度なしでグラフィックをキャンバスに直接描画するにはどうすればよいですか? あまりにも多くのグラフィック オブジェクトを作成して何度も描画したくないため、上記のコードは 2 行しかありません。BitBlt
この目的のために、特別なメカニズムを使って何かできる方法があることを願っています。