Cómo realizar un Splah Screen transparente

4869 vistas

Lo primero que tenemos que hacer es crear un Splash Screen. Para ello veamos la [iurl=85&fs=38#39]FAQ[/iurl].

Para añadir la transparencia, simplemente tendremos que poner en true la propiedad Transparent de la ventana Splash y de establecer la propiedad BorderStyle a bsNone. En los sistemas anteriores a Windows ME, la propiedad Transparent no tiene efecto. En este caso, simplemente tendremos que reemplazar el fondo de la ventana por la imagen de la pantalla. De esta manera, la ventana no será realmente transparente, pero daré el efecto. Veamos el código necesario:



delphi
  1. {...}
  2. type
  3.   TSplashForm = class(TForm)
  4.     {...} // componentes del formulario
  5.     procedure FormCreate(Sender: TObject);
  6.     procedure FormPaint(Sender: TObject);
  7.     procedure FormDestroy(Sender: TObject);
  8.     {...}
  9.   private
  10.     FImagenDeFondo: TBitmap;
  11.   {...}
  12.   end;
  13.  
  14. var
  15.   SplashForm: TSplashForm;
  16.  
  17. implementation
  18.  
  19. {$R *.dfm}
  20.  
  21. {...}
  22.  
  23. procedure TSplashForm.FormCreate(Sender: TObject);
  24. begin
  25.   //Para saber la versión de Windows, tendremos que usar Win32MajorVersion y Win32MinorVersion
  26.   //En este caso, con usar Win32MajorVersion. Win95, 98 y ME tiene la 4
  27.   if Win32MajorVersion = 4 then
  28.     begin
  29.       FImagenDeFondo := TBitmap.Create;
  30.       FImagenDeFondo.width := Screen.width;
  31.       FImagenDeFondo.height := Screen.height;
  32.       FImagenDeFondo.canvas.CopyRect(ClientRect, Canvas, ClientRect);
  33.     end;
  34. end;
  35.  
  36. procedure TSplashForm.FormPaint(Sender: TObject);
  37. begin
  38.   //Reemplazamos el fondo de la ventana con la imagen capturada
  39.   if Win32MajorVersion = 4 then
  40.       Canvas.CopyRect(ClientRect, FImagenDeFondo.Canvas, ClientRect);
  41. end;
  42.  
  43. procedure TSplashForm.FormDestroy(Sender: TObject);
  44. begin
  45.   //SIEMPRE destruir los objetos creados
  46.   if Win32MajorVersion = 4 then
  47.     FImagenDeFondo.Free;
  48. end;
  49. {...}