Полупрозрачный -слой над ListView в Delphi?

В Delphi XE2 у меня есть ListView с миниатюрами изображений. Когда я щелкаю одну из миниатюр, я хочу, чтобы ListView был покрыт темным полу-прозрачным слоем, а изображение, по которому щелкнули, было увеличено поверх этого слоя.

Поскольку невозможно поместить TImage поверх ListView, я попытался использовать для слоя другую форму с прозрачностью AlphaBlend 128. Однако эта форма AlphaBlend также делает прозрачным TImage на ней Alpha -.

Таким образом, цель состоит в том, чтобы сделать прозрачным слой формы AlphaBlend -, но не изображение на нем. Как этого добиться?


РЕДАКТИРОВАТЬ 7 августа 2012 г.:

РЕШЕНО!! Спасибо Реми Лебо, который дал мне решительный намек на создание образа. Я нашел TW7Image от TMS, который является единственным известным мне типом изображения, имеющим свойство Opacity (, то есть AlphaBlend ). Я использовал эту процедуру:

В W7Image загрузите черное изображение в свойстве Picture, установите непрозрачность на 192 и установите режим Stretch.

Установите другое изображение на Центр, Пропорционально и т. д., затем:

// In this order (!):
// 1.
imgSemiTransparentBlackLayer.Parent := MyListView;
imgSemiTransparentBlackLayer.Align := alClient;
// 2.
imgTop.Picture.LoadFromFile('MyPicture.png');
imgTop.Parent := MyListView;
imgTop.Align := alClient;
5
задан user1580348 7 August 2012 в 12:44
поделиться