Ver Mensaje Individual
  #3  
Antiguo 28-08-2010
locojoan locojoan is offline
Miembro
 
Registrado: mar 2004
Posts: 18
Reputación: 0
locojoan Va por buen camino
Encontre este procedimiento

Código Delphi [-]
procedure FadeControl(AControl : TWinControl);
Var
Bitmap  : TBitmap;
Canvas  : TControlCanvas;

Func    : TBlendFunction;
R       : TRect;

Opacity : Integer;
Begin
If (AControl = nil) or (AControl.Parent = nil) or not AControl.Visible Then
   Exit;

Bitmap  := TBitmap.Create;
Canvas  := TControlCanvas.Create;
Try
   With AControl Do Begin
    Bitmap.Width   := Width;
    Bitmap.Height  := Height;

    Canvas.Control :=  AControl;
    Bitmap.Canvas.CopyRect(ClientRect, Canvas, ClientRect);

    Hide;

    Func.BlendOp             := AC_SRC_OVER;
    Func.BlendFlags          := 0;
    Func.AlphaFormat         := 0;


    Canvas.Control         := Parent;
    Parent.DoubleBuffered  := True;

    Opacity := 100;
    While Opacity > 20 Do Begin
      R := ClientRect;
      OffsetRect(R, Left, Top);
      InvalidateRect(Parent.Handle, @R, False);
      Parent.Update;

      Func.SourceConstantAlpha := Opacity;
      AlphaBlend(Canvas.Handle, Left, Top, Width, Height,
                 Bitmap.Canvas.Handle, 0, 0, Width, Height,
                 Func);

      Sleep(50);
      Dec(Opacity, 20);
      exit;
    End;
   End;

   Canvas.Control.Invalidate;

finally
   Bitmap.Free;
   Canvas.Free;
End;
End;

Funciona bastante bien. el problema es que una ves que se vuelve transparente el componente, por ejemplo un boton ya no se puede usar. alguien tal ves se anima a modificarlo para que se puedan manejar con normalidad los componentes luego de volverlos trasparentes?

gracias.

Última edición por roman fecha: 03-06-2016 a las 16:43:07. Razón: Agregar etiquetas [delphi]
Responder Con Cita