В 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;