Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2009
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Question capas con UpdateLayerWindow

Como están todos, espero que bien. Les escribo porque me ha saltado una duda con la función “UpdateLayerWindow”, yo uso esta función para tener un splash-screen semitransparente.

Cuando este se abre, comienza a revisar unos datos de una base, y por esto puede tardarse mucho en mostrar el form principal, Así que me gustaría ponerle un “ProgressBar” para ver cuánto lleva revisado, el problema es que con esta función solo me muestra una capa de mi ventana (o eso creo), y tendría que poner el “ProgressBar” en otro form transparente.

Así que mi pregunta es ¿se se puede mostrar más de una capa con esta función?, y si es así ¿cómo se haría?

Les dejo la forma en que yo la ocupo
Código:
  TBlendFunction BlendFunction;
  TPoint BitmapPos;
  TSize BitmapSize;
  DWORD exStyle;  

  exStyle = GetWindowLongA(Handle, GWL_EXSTYLE);
  SetWindowLong(Handle, GWL_EXSTYLE, exStyle | WS_EX_LAYERED);

  BitmapPos = Point(0, 0);
  BitmapSize.cx = Image1->Width;
  BitmapSize.cy = Image1->Height;

  BlendFunction.BlendOp = AC_SRC_OVER;
  BlendFunction.BlendFlags = 0;
  BlendFunction.SourceConstantAlpha = 255;
  BlendFunction.AlphaFormat = AC_SRC_ALPHA;

  UpdateLayeredWindow(
                      Handle,
                      0,
                      NULL,
                      &BitmapSize,
                      Image1->Canvas->Handle,
                      &BitmapPos,
                      0,
                      &BlendFunction,
                      ULW_ALPHA
                     );
Nos vemos y de antemano gracias.
Responder Con Cita
  #2  
Antiguo 01-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
PREGUNTA: ¿Y para esto no te sirve el AlphaBlend de los formularios?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-02-2009
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Unhappy

Que tal Neftali, gracias por tu interés. pues no me sirve el “AlphaBlend”, porque mi splash es un logo, así que no es una imagen cuadrada, además tiene sombra (canal alpha) y si uso “TransparentColor” y “AlphaBlend” pues la imagen se ve horrible, porque el canal alpha se combina con el color del pixel que este debajo y si pongo el verde como color transparente cuando se inicie la aplicación comenzara anular todos los pixeles de verde, pero los que se combinaron con el canal alpha no los anula por ser un color diferente.
Responder Con Cita
  #4  
Antiguo 01-02-2009
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por _cero_ Ver Mensaje
Que tal Neftali, gracias por tu interés. pues no me sirve el “AlphaBlend”, porque mi splash es un logo, así que no es una imagen cuadrada, además tiene sombra (canal alpha) y si uso “TransparentColor” y “AlphaBlend” pues la imagen se ve horrible, porque el canal alpha se combina con el color del pixel que este debajo y si pongo el verde como color transparente cuando se inicie la aplicación comenzara anular todos los pixeles de verde, pero los que se combinaron con el canal alpha no los anula por ser un color diferente.
¡¡¡ Anda la osa !!!, lo que uno viene a aprender ya de grande ...
__________________
Ya tengo Firma!
Responder Con Cita
  #5  
Antiguo 01-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ok.
El tema de la transparencia y las formas no rectangulares se pueden combinar añadiendo regiones. Hay incluso programas que te facilitan casi todo el trabajo.
Posiblemente el tema de las sombras anula mi sugerencia.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 02-02-2009
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Unhappy

En efecto, las regiones me servirían en cuanto a forma pero para sombra creo que no, además he estado leyendo un poco y lo único extra que pude averiguar es que Windows vista usa esto para crear el Aero Glass así que en teoría si se puede mostrar más de una capa.

Mmm creo que por el momento tendré que poner los componentes en un form aparte, pero si alguien sabe cómo hacerlo con “UpdateLayerWindow” selo agradecería mucho.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
aplicacion 3 capas en c# cuscus .NET 2 15-11-2005 21:06:57
Clipper en 3 Capas ???? AGAG4 Providers 3 30-06-2005 19:03:17
Capas o DataAware???? marto Debates 16 29-04-2005 23:09:43
Interbase 3 capas StartKill Firebird e Interbase 7 17-02-2005 20:01:29
Programa a 3 capas walace_soy Varios 0 25-01-2005 18:00:31


La franja horaria es GMT +2. Ahora son las 22:23:46.


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
Copyright 1996-2007 Club Delphi