2011-02-04 13 views
1

私は2つの異なるTPngObject SRCとDSTを持っています。 SRCはPNGグラフィックを割り当てています。TPngObjectから透明度を保持している別のTPngObjectに選択領域をコピーする方法

マイコード:

dst := TpngImage.createblank(COLOR_RGB, 16, 900, 60); 
src.Assign(Image2.Picture.Graphic); 

しかし、私は、DSTに、srcの一部をコピーする必要があります。私はキャンバスにコピーして描画しようとしますが、透明では動作しません。

+0

TPngImageのコードを読んでいるとき、 'TransparencyMode'が' ptmPartial'に設定されていると、アルファチャンネルが尊重されます。 PNG画像を読み込んだときに 'TransparencyMode'が' ptmPartial'に設定されていないのはなぜですか? –

答えて

2

AlphaBlend機能でこれを実行できるはずです。 HDCパラメータには{SRC/DEST}.Canvas.Handleを使用します。

BitBltでこれを達成できると思います。

TPNGImageインスタンスのTransparencyModeプロパティの値についてはまだ興味があります。

1

私はTPNGImageを使用しませんが、これで刺すようにします... PixelsプロパティまたはScanlineをサポートしていますか?その場合は、必要なピクセルだけをコピーし、r、g、b、およびaの値を手動で設定することができます。私はこれをpf32bitのビットマップで多く行います。あなたが気付いたように、それを描くと、透明性が保たれません。アルファ値は手動で設定する必要があります。

TPNGImageがピクセルまたはスキャンラインをサポートしていない場合、最初にpngをビットマップに変換してそのようにすることができます。

関連する問題