Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Imagen png con formulario transparente? (https://www.clubdelphi.com/foros/showthread.php?t=50609)

marcosl 22-11-2007 20:18:56

Imagen png con formulario transparente?
 
ok señores, tengo este problema tengo una imagen png toda muy bonita , ahora quiero utilizar esta imagen como splash...

El problema es como hago que solo se muestre la imagen TENGAN ENCUENTRA QUE LA IMAGEN PNG TIENE COLORES ALPHA..

si pongo el formulario con alpha 0 me transparenta hasta la imagen asi que no logro que se vea la imagen...

si pongo un color de transparencia los bordes de la imagen (alpha) se ven pixelados...

No puedo hacer que el formulario tome el contorno de la imagen esto es obvio.

Si capturo lo que tengo de fondo y lo pongo detras de la imagen da la sensacion de transparencia hasta que alguien mueve alguna ventana...



Así que aquí estoy imagen png como splash y sin fondo.... sigo buscando solución

xEsk 23-11-2007 01:49:12

Cita:

Si capturo lo que tengo de fondo y lo pongo detras de la imagen da la sensacion de transparencia hasta que alguien mueve alguna ventana...
Pues así es como lo hacen la mayoría de programas que muestran un Splash-Screen "molón"... xD El Photoshop, el CodeBlocks, etc... utilizan esta técnica o parecida (y les ocurre lo mismo que a ti, como es lógico! xD).

Teniendo en cuenta, que lo que quieres es mostrar un Splash-Screen, no creo que importe mucho lo de que te mueven una ventana, porqué un Splash-Screen no debería durar mucho tiempo en pantalla (a no ser que tu programa tarde mil en abrirse xDD).

Es mi humilde opinión.

Saludos.

marcosl 23-11-2007 13:20:58

Respuesta
 
El tiempo que aparece el splash es relativo, que tal si quiero que mi programa se abra y que todabia persista mi splash en el centro o si mi program es pesado y mi splash tiene una barra de progreso y mientras esta cargando el usuario esta haciendo otras cosas.

No es la idea que nos pase lo mismo que a otros programas, en el foro somos mas para pensar.

En cuanto tenga una solución la comparto con ustedes.

"Lo difícil se hace rápido, lo imposible tardamos un ratito más."

fide 24-11-2007 21:29:44

Una solucion!
 
Buscar un color extraño, como el fucia ese, y ponerlo como TransParentColor del form. de ahi, ponerle Transparent := True;

y solo se vera la PNG con sombra y todo...

ArdiIIa 24-11-2007 21:54:42

Prueba esto:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Brush.Style := bsClear;
BorderStyle := bsNone;
end;

Saludos

marcosl 26-11-2007 12:41:56

Respuesta
 
Fide, eso solo funciona con los bmp si tengo un png tengo colores Alpha, que son los colores alpha, son todos aquellos que se funden con el color que tenemos de fondo, si pongo un color y lo pongo como transparente el borde de la imagen queda pixelada y horrible.

Ardilla, eso es lo q es estoy haciendo pero no soluciona el refresco del fondo del splash al cambiar el fondo del escritorio.


talves.. un timer... o capturar el mesaje de windows cuando se mueven las ventanas...

ArdiIIa 26-11-2007 14:31:31

Cita:

Empezado por marcosl
Ardilla, eso es lo q es estoy haciendo pero no soluciona el refresco del fondo del splash al cambiar el fondo del escritorio.
talves.. un timer... o capturar el mesaje de windows cuando se mueven las ventanas...

Ya me di cuenta después y realicé otras pruebas....

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, ComCtrls;

type


  TForm1 = class(TForm)
    Image1: TImage;
    ProgressBar1: TProgressBar;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure InicioProcesos;
    procedure Image1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle OR WS_EX_TRANSPARENT;
  Brush.Style := bsClear;
  BorderStyle := bsNone;
  Refresh;
end;


procedure TForm1.InicioProcesos;
Var I : integer;
begin
For I := 0 To 100 DO
  Begin
    Sleep(50);
    ProgressBar1.Position := I;
  End;
Close;

end;

procedure TForm1.Image1Click(Sender: TObject);
begin
  InicioProcesos;
end;

end.

OJO: Código original

marcosl 26-11-2007 14:53:03

Respuesta Ardilla
 
Bien ardilla estamos un paso mas cerca o almenos hicimos uno al costado...

El tema es este, cuando se abre otra ventana mi splash queda detras... y si lo traigo adelante cuesta un poco que me haga caso, y por otro lado si lo tengo adelante y muevo cualquier ventana que tenga de fondo el splash se mueve con el...

ya se ya se se hace lo que se puede lo que no se compra hecho, igual no vi el cod solo lo implemente dentro de un rato veo como resolver estos dos temas restantes.

Gracias por tu colaboración...

marcosl 26-11-2007 15:16:15

otra cosa...
 
..que econtre fue que si mi aplicacion esta maximizada y hay otra aplicacion corriendo mi imagen de splash se borra al minimizar o maximizar otras ventanas, tambiem encontre el defecto o limitacion que al abrir otra ventana mi imagen se reproduce en todas las ventanas que abro (esto si antes movi la ventana anterior con mi splash que se muevo en conjunto a las otras ventanas)...preguntando se llega a Roma, o no.


Ô_o

jhonyboy777 06-06-2010 23:09:23

usa suipack
 
instalale el suipack a delphi y trae una herramienta con la que puedes crear formas o formularios a partir de una imagen, solo funciona con bmp pero no hay problema ya que en la configuracion del componente te quita el color que tu gustes para que sea tranaparente espero que te sirva esta informacion y que no sea muy tarde

emesystem 07-09-2012 17:29:19

Gracias Ardilla! :d
 
[quote=ArdiIIa;248408]Ya me di cuenta después y realicé otras pruebas....

que tal [ ARDILLA ] :D
MUCHISIMAS GRACIAS, A MI SI ME SIRVIÓ TU EJEMPLO
ESO ES LO QUE ANDABA BUSCANDO EXACTAMENTE! :D
TE ENVÍO UN GRAN SALUDO!
Y POR CIERTO TENDRÁN CÓDIGO,
PARA VISUALIZAR VIDEO ATRAVES DE UNA CAMARA WEB!?
SE LOS AGRADECERÍA MUCHISIMO


La franja horaria es GMT +2. Ahora son las 09:54:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi