我會描述我的總體目標,以防我提出的問題不是以最佳形式獲得我正在尋找的答案。我有一個圍繞X軸旋轉的單詞或「單詞球」。當字旋轉到後面(Z座標從-1到1,從前到後)時,我打算改變每個單詞的大小和不透明度,以便「前」中的單詞是100%不透明,全尺寸和單詞在後面是更小,有點透明。我寧願用直接的Delphi代碼來做這件事,並避免像Direct3D這樣的事情,我已經有了旋轉代碼工作正常。我只需要實現基於Z座標的感性着色思路。Delphi 6:如何創建一個帶有Alpha通道的TextOut的位圖?
當我創建單詞球時,我爲每個單詞動態創建一個TImage組件。我使用TCanvas.TextOut()方法以居中的方式「打印」了單詞到TImage位圖。我打算使用BitBlt將該位圖複製到包含單詞球的主Canvas中的正確位置,因爲BitBlt速度很快並且可以即時調整位圖大小,從而滿足我感知着色操作的要求之一。
但我不知道促進Alpha混合的最佳方式。我知道Windows有AlphaBlend()調用,它看起來相當簡單易用。但我需要知道如何創建一個具有alpha通道的每個單詞TImage組件副本的位圖。請注意,在我的情況下,整個位圖將具有統一的alpha通道值,因爲我希望根據它的Z座標將不透明度統一應用於整個單詞。
通過使用TCanvas.TextOut()創建的位圖動態創建的TImage組件是否具有Alpha通道?如果不是,我該如何創建一個,或實時創建一個TImage位圖副本,並將Alpha通道傳遞給AlphaBlend()調用?如果有更好的方法做到這一點,請讓我知道。