在Delphi XE2中,我有一個帶有圖像縮略圖的ListView。當我點擊其中一個縮略圖時,我想讓ListView覆蓋一層黑暗的半透明圖層,並在此圖層上放大點擊圖像。Delphi中ListView的半透明層?
由於無法將TImage放置在ListView的頂部,因此我嘗試使用AlphaBlend 128透明度的另一個窗體。但是,這個AlphaBlend表單也使Alphamage透明。
所以目標似乎是使圖層形成AlphaBlend透明,但不是它的圖像。這怎麼能實現?
編輯在7.Aug.2012:
解決!感謝雷米Lebeau,誰給了我的決定性暗示父母的形象。我從TMS發現了TW7Image,它是我所知道的具有不透明度(即AlphaBlend)屬性的唯一圖像類型。我使用這個過程:
在W7Image中,在Picture屬性中加載黑色圖像,將Opacity設置爲192並設置Stretch模式。
設置其他圖像中心,比例等,則:
// In this order (!):
// 1.
imgSemiTransparentBlackLayer.Parent := MyListView;
imgSemiTransparentBlackLayer.Align := alClient;
// 2.
imgTop.Picture.LoadFromFile('MyPicture.png');
imgTop.Parent := MyListView;
imgTop.Align := alClient;
應用AlphaBlend將貫穿整個表單,我不認爲這是你想要的。你需要做一些自定義繪圖,我個人沒有專業知識給你一個可靠的答案,但我現在可以告訴你,這裏會有一些骯髒的繪圖技巧。使用頂層的另一個VCL控件將不會是答案,但在此列表的畫布上應用整個自定義繪圖是您需要去的地方。 – 2012-08-07 00:48:23
而「髒繪圖技巧」,我的意思是它會涉及到一堆額外的代碼,它不一定與德爾福一起出現,最有可能會有一些Windows API調用,並且德爾福沒有簡單的方法來做到這一點。 – 2012-08-07 01:04:16
如果我可以找到一種方法來將AlphaBlend透明度僅限制到表單的某個部分,則可以輕鬆解決該問題。 – user1580348 2012-08-07 01:37:45