如何從TImageList獲取TPicture?Delphi:來自TImageList的TPicture
我需要從圖像列表中做Image1.Picture:=...TPicture
,將圖像加載到TImage中。
圖像列表存儲我所有透明的PNG圖像。
我試圖使用位圖(GetBitmap
),但我需要的是透明度。不幸的是,我有一個使用位圖的白色背景。
謝謝!
如何從TImageList獲取TPicture?Delphi:來自TImageList的TPicture
我需要從圖像列表中做Image1.Picture:=...TPicture
,將圖像加載到TImage中。
圖像列表存儲我所有透明的PNG圖像。
我試圖使用位圖(GetBitmap
),但我需要的是透明度。不幸的是,我有一個使用位圖的白色背景。
謝謝!
常規TImageList使用位圖。儘管它們可以是部分透明的,但它實際上只是一個假貨。在Delphi中,您可以通過將位圖分配給單個透明顏色來使其位圖透明。確切的顏色將被繪製爲100%透明,而其他顏色則不是。通常顏色是從圖像的左下角取得的。
TPicture本身並沒有做任何事情。它僅僅是TGraphic後代的容器。你必須找到一種可以透明的圖像。
便捷的格式是PNG。 PNG事件支持一個alpha通道,這意味着每個像素可以分配一個不同的透明度值。
幸運的是有TPngImageLists將TImageList的易用性和PNG的強大功能相結合。你可以閱讀this article。它是荷蘭語,但Google Translate可以幫助你。或者,也許你可以找到關於這個問題的英文資源。我使用過這個圖片列表,它很棒,因爲你可以擁有帶有Alpha通道的實際圖標,並且仍然使用常規工具欄和速度按鈕。
TImageList很高興地保存了部分透明的圖像,並且已經完成了很長時間。我在D6中這樣做,雖然它需要一個溫和的黑客來實現它。幾年前,對黑客的需求就被移除了。 –
您正在評價「PNG的威力」,請查看我對OP的帖子的評論。具體來說,第一段不是真的,完全沒有假貨。 –
1位alpha,實際上是指「開」或「關」,所以像素是完全透明或完全不透明的。 Pngs(以及圖標)支持alpha通道,可以讓像素半透明。這對於在可以更改的背景上繪製小圖像特別有用。它可以,因爲每個人在Windows中都有不同的顏色設置,工具欄也可以有漸變。我鏈接到的文章在頂部的圖片中顯示了這一點。左邊的控制器圖標有一個alpha通道,這對於邊緣的像素特別有用,而另一個圖標的邊緣不那麼光滑。 – GolezTrol
TImageList不能容納PNG,只能放置圖標和位圖。 –
@ Remy Lebeau,所以如果我在工具欄中使用帶PNG的圖像列表,那麼該圖像列表會自動使透明背景應用透明顏色? – maxfax
我是否需要手動設置透明顏色和透明度的位圖以在TImage中獲得適當的結果? – maxfax