0

メイン フォームにいくつかの TJvImage コンポーネントがあります。1 つは、部分的に透明な PNG ファイルから設計時に読み込まれます。もう一方は最初のものよりも小さく、その前にあります。実行時に別の部分的に透明な PNG ファイルと共にロードされます。

JvImage1.Picture.LoadFromFile ('Logo.png') ;  

JvImage1.Transparent が TRUE に設定されています。問題は単純です: 小さい画像はアルファチャンネルを無視してレンダリングされます - つまり、背景画像を打ち抜きます。

設計時に両方のイメージをロードすると、これは発生しません。どちらもフォーム上で部分的に透明に表示され、プログラムを実行すると正しく表示されます。

本当のジレンマは、問題を実証するために書かれた最小限のテスト プログラムでは問題が示され、アプリケーション内の同じコードが適切に動作しないことです。

動作に影響を与える可能性のある基本的なメインフォームについて何かありますか?

4

1 に答える 1

1

これが TJvImage でも同じかどうかはわかりませんが、TImage の Transparent プロパティを True に設定すると、TImage は TransparentColor を持つピクセルのレンダリングをスキップします。透明色が設定されていない場合は、左下のピクセルの色が使用されます。このようなモードでは、TImage はアルファ チャネルを考慮しません。実際、透過性は、TBitmap タイプの画像を TImage にロードした場合にのみ機能します。

TJvImage もおそらく同様の方法で動作すると思います。したがって、画像を適切に表示するには、Transparent プロパティを False に設定する必要があります。これにより、TJvImage は、画像自体にエンコードされたアルファ透明度を使用して画像をレンダリングできるようになります。

于 2014-05-22T11:45:36.177 に答える