![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
![]() 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 ); |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
![]() 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.
|
#4
|
||||
|
||||
Cita:
![]()
__________________
Ya tengo Firma! |
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
![]() 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. ![]() |
![]() |
|
|
![]() |
||||
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 |
![]() |
|