Ayuda imágenes en un fondo

Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 11:00 am

Hola,

Estoy intentando hacer una ventana con una imágen de fondo y en esa ventana poner un diálogo con fondo transparente con diversos controles, entre ellos una imágen .png o bmp.

El caso es que buscando en el foro, he conseguido poner el diálogo transparente con esto:

Code: Select all  Expand view
FUNCTION TranspColor( oWnd, nRGB )
    SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_BORDER )
    SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_EX_LAYERED )
    SetLayeredWindowAttributes( oWnd:hWnd, nRGB, 0, LWA_COLORKEY )
RETURN NIL
 


Pero cuando en el diálogo quiero poner la imágen, sale mal. Os pongo una imágen de como se ve en el diseño original hecho por un diseñador, y como queda en FWH con la orden:

Code: Select all  Expand view
REDEFINE BITMAP oBmp1 ID 105 OF oDlgAcceso FILENAME cPath+"Dominus_icononombre.bmp"


Aquí veis como queda en FWH y como estaba diseñado:

Image

Image
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 11:38 am

Hola,

He comprobado que poniendo la imágen en el fondo de la ventana, sale bien.

El problema es pintarlo sobre el diálogo que previamente se ha hecho transparente.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 12:03 pm

Hola,

Compruebo también, que para hacer un diálogo transparente, hay que poner un color de Brush y ese es el que se usa para transparentarlo.

Bueno, pues si uso CLR_BLUE, la imágen la pinta bien pero CELESTITA. Si uso un verde, verdecita, etc. Es decir, no me deja igual la imágen, aparte de todo
me la colorea por ser blanca la original.

¿Qué solución tiene esto?
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby Antonio Linares » Tue Dec 30, 2014 4:12 pm

Joaquin,

Puedes poner una captura de pantalla del diálogo ?

Es para entender lo que quieres hacer exactamente y asi orientarte correctamente :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41404
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 4:23 pm

Mira Antonio,

El primer muñeco de arriba es un png sobre la ventana y el de abajo, es el mismo sobre el diálogo transparentado con CLR_BLUE. Dime si lo entiendes.

Image
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 4:28 pm

Antonio,

Y para que veas que el transparentar es el problema, te lo muestro sin transparantar, mira que bien lo pinta. Sin problemas.

Image
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby Antonio Linares » Tue Dec 30, 2014 4:33 pm

Los ficheros PNGs tienen una capa de transparencia.

Si lo conviertes a BMP, y te aseguras de que no tenga transparencia, entonces posiblemente te funcione bien.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41404
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda imágenes en un fondo

Postby jmartial » Tue Dec 30, 2014 4:45 pm

No, ya lo había probado, pierde mucha calidad, mira que diferencia el de arriba con el de abajo que es un BMP sin transparencia.

Image
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby Antonio Linares » Tue Dec 30, 2014 5:34 pm

Joaquin,

Pidámosle ayuda a Uwe que nuestro maestro en gráficos :-)

Uwe please help us! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41404
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda imágenes en un fondo

Postby jmartial » Wed Dec 31, 2014 8:45 am

Antonio,

Uwe no ha entendido el problema.

Puedes confirmarle que sí, que la imágen es alphachannel-Image ( 32bbp ).

Explícale, que es un diálogo transparentado el que presenta el problema, no pintándolo directamente en una ventana o diálogo.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda imágenes en un fondo

Postby Antonio Linares » Wed Dec 31, 2014 1:00 pm

Uwe,

Joaquin says that the image is an alphachannel-Image ( 32bbp )

The problem appears as it is a transparent dialog, using the code that Joaquín posted here.

Many thanks for your help! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41404
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda imágenes en un fondo

Postby mastintin » Wed Dec 31, 2014 1:32 pm

Antonio , respecto a los comentarios en el foro ingles del compilador de borland y los problemas con los bitmaps de 32 bits , a demás del uso de pellesC que es una opción , creo que mejor solución es usar el rc de microsoft , ahora que se distribuye free . Se puede usar sin ningún problema con bcc582 y son cuatro archivos que apenas ocupan . Los he colocado en la carpeta bin de bcc582 y a funcionar con bmps 32bits.
Si pudiera mandar un código autocontenido y el bmps , podríamos buscar una solución "alternativa"
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Ayuda imágenes en un fondo

Postby mastintin » Wed Dec 31, 2014 2:00 pm

He adaptado el código de testtran.prg un poco para ver el efecto , pero aquí parece que funciona bien ...
Code: Select all  Expand view


FUNCTION MAIN()

DEFINE DIALOG oDlg TITLE "FiveWin Dynamic folders" ;
      FROM 5, 5 TO 60, 150 COLOR "N/G"

 ACTIVATE DIALOG oDlg CENTERED ;
 ON PAINT MSGLOGO( "..\bitmaps\metro\users.bmp", 5 )

    RETURN NIL


FUNCTION MSGLOGO( cImage, nSeconds )

    LOCAL oDlg, oTimer, oImage

    DEFAULT nSeconds := 5

    DEFINE DIALOG oDlg;
           SIZE 800, 600;
           STYLE WS_POPUP;
           BRUSH TBrush():New( "NULL" )

    DEFINE TIMER oTimer OF oDlg;
           INTERVAL nSeconds * 1000;
           ACTION oDlg:End()

    @ 3, 5 IMAGE oImage;
           FILE cImage;
           SIZE 800, 600;
           NOBORDER

    oImage:lTransparent = .T.

    ACTIVATE DIALOG oDlg;
             ON INIT ( oTimer:hWndOwner := oDlg:hWnd,;
                       oTimer:Activate(),;
                       SETTRANSP( oDlg ) );
             CENTER

    RETURN NIL


#define LWA_COLORKEY 1

#define GWL_EXSTYLE -20

#define WS_EX_LAYERED 524288


STATIC FUNCTION SETTRANSP( oDlg )
   SETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE, NOR( GETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) )
   SETLAYEREDWINDOWATTRIBUTES( oDlg:hWnd, , , LWA_COLORKEY )
RETURN NIL
 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Ayuda imágenes en un fondo

Postby mastintin » Wed Dec 31, 2014 4:09 pm

pues si que hay diferencias y muchas dependiendo que se usa .... voy a poner ejemplos ...
imagen usando end.png con IMAGE ( freeimage) desde dialogo izq. y dialogo transparente decb.
Usando el comando BITMAP sale exactamente el mismo resultado ( usa funciona interna FWH.
Image
usando "truco" gdiplus ...en dialogo queda perfecto , en transparente solo regular ...
Image
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests