Cómo realizar un Splah Screen transparente
Artículo por Club Developers · 28 febrero 2006
5162 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:
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
{...} type TSplashForm = class(TForm) {...} // componentes del formulario procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormDestroy(Sender: TObject); {...} private FImagenDeFondo: TBitmap; {...} end; var SplashForm: TSplashForm; implementation {$R *.dfm} {...} procedure TSplashForm.FormCreate(Sender: TObject); begin //Para saber la versión de Windows, tendremos que usar Win32MajorVersion y Win32MinorVersion //En este caso, con usar Win32MajorVersion. Win95, 98 y ME tiene la 4 if Win32MajorVersion = 4 then begin FImagenDeFondo := TBitmap.Create; FImagenDeFondo.width := Screen.width; FImagenDeFondo.height := Screen.height; FImagenDeFondo.canvas.CopyRect(ClientRect, Canvas, ClientRect); end; end; procedure TSplashForm.FormPaint(Sender: TObject); begin //Reemplazamos el fondo de la ventana con la imagen capturada if Win32MajorVersion = 4 then Canvas.CopyRect(ClientRect, FImagenDeFondo.Canvas, ClientRect); end; procedure TSplashForm.FormDestroy(Sender: TObject); begin //SIEMPRE destruir los objetos creados if Win32MajorVersion = 4 then FImagenDeFondo.Free; end; {...}