2014-05-22 56 views
0

我的主窗體上有幾個TJvImage組件。一個在設計時從部分透明的PNG文件加載。另一個比第一個還小。它在運行時加載另一個部分透明的PNG文件。德爾福2007年 - 從PNG文件加載TJvImage失去透明度

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

JvImage1.Transparent設置爲TRUE。問題很簡單:較小的圖像呈現忽略alpha通道 - 即它衝出背景圖像。

當我在設計時加載兩個圖像時不會發生這種情況。它們在窗體上都顯示爲部分透明,並在運行程序時正確顯示。

真正的困境是,寫一個最小的測試程序來試圖證明問題不是顯示的問題,但在應用程序本身的相同代碼不起作用。

是否有任何可能影響行爲的底層主窗體?

+1

我建議你找出問題所在。剝離失敗的代碼,直到它工作。看看dfm文件。爲什麼將Transparent設置爲True?您的圖片有一個Alpha通道。 –

+0

我從來沒有想過你需要設置'透明'爲FALSE才能獲得透明度。現在我明白了! (幫助狀態:「將透明設置爲true以允許TImage對象後面的對象通過圖像的背景顯示。將Transparent設置爲false以使圖像的背景不透明」)。不幸的是,將Transparent設置爲false並不能解決問題。我嘗試創建一個項目並將違規表單的全部內容粘貼到項目中,並且圖像顯示正常。我有一些工作在我面前。 – rossmcm

回答

1

我不知道這是否與TJvImage相同,但是當您將TImage的透明屬性設置爲True時,它會導致TImage跳過使用TransparentColor渲染任何像素。 如果未設置透明色,則使用左下像素的顏色。 在這種模式下,TImage不會考慮alpha通道。 Infact透明度僅適用於將TBitmap類型的圖像加載到TImage中時。

我覺得TJvImage可能以類似的方式工作。所以爲了正確顯示你的圖像,你應該把Transparent屬性設置爲False。這可能會允許TJvImage通過使用編碼到圖片本身的Alpha透明度來渲染圖片。

相關問題