Einzelnen Beitrag anzeigen

moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Graphics32 - Layer (Transparenz, zechnen)

  Alt 18. Mai 2006, 11:38
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...
  Mit Zitat antworten Zitat