Ich habe vor kurzem eine kleine Prozedur gebastelt, die mir auf einem TImage32 ein Layer erstellt und einen Alpha setzt. Dies war für mich wichtig, damit ich quasi ein MouseEnter mit Alpha-Effekt habe:
Delphi-Quellcode:
procedure ImageAlpha( Image: TImage32;
Layer: TBitmap32;
Background: TBitmap32 = nil );
var
L: TBitmapLayer;
const
MasterAlpha: SmallInt = 100;
Width: SmallInt = 24;
Height: SmallInt = 24;
Left: SmallInt = 0;
Top: SmallInt = 0;
begin
Image.Layers.Clear();
if ( Assigned( Background ) ) then
Image.Bitmap := Background;
L := TBitmapLayer.Create( Image.Layers );
L.Bitmap.SetSize( Width, Height );
L.Location := FloatRect( Left, Top, Width, Height );
L.Bitmap.CombineMode := cmBlend;
L.Bitmap.DrawMode := dmBlend;
L.Bitmap := Layer;
L.Bitmap.MasterAlpha := MasterAlpha;
end;
Der Aufruf ist sehr einfach:
ImageAlpha( lock_image_bg, icon_list.Bitmaps[0].Bitmap );
Bei MouseEnter beim entsprechenden TImage32 dann folgendes:
Delphi-Quellcode:
if ( Sender is TImage32 ) then
with Sender as TImage32 do
TBitmapLayer( Layers[0] ).Bitmap.MasterAlpha := 255;
Und bei MouseLeave:
Delphi-Quellcode:
if ( Sender is TImage32 ) then
with Sender as TImage32 do
TBitmapLayer( Layers[0] ).Bitmap.MasterAlpha := 100;
Lässt sich natürlich beliebig ausbauen...