Problema Bitmap Transparente FWH 2.7

Problema Bitmap Transparente FWH 2.7

Postby antolin » Tue Apr 15, 2008 3:28 pm

Resulta que tengo un dialogo azul oscuro con un bitmap de fondo pintado con PALBMPDRAW mediante el ::bPainted del dialogo. Ademá tengo un bitmap DEFINido como TRANSPARENT que quiero utilizar como botón.
Pero resulta que ese ultimo bitmap no se transparenta con respecto al bitmap de fondo sino que lo hace con respeto al fondo del dialogo.
Como resultado, en vez de un fondo degradado clarito con un botón con contorno transparente por encima, tengo un degradado clarito con un recuadro azul oscuro (la parte supuestamente transparente) con un botón dentro.
¿Como hago para que detrás del bitmap pequeño se vea el bitmap de fondo en lugar del fondo del Dialogo?

Gracias de antemano.

Tengo FWH 2.7 de Enero 2007
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby Antonio Linares » Tue Apr 15, 2008 6:39 pm

En fwh\samples\TestFold.prg tienes un ejemplo de cómo mostrar un bitmap con el fondo transparente.
regards, saludos

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

Postby antolin » Wed Apr 16, 2008 8:48 am

El problema no es ese Antonio. El bitmap pequeño si se transparenta, pero debajo no se ve el Bitmap de fondo, sino el fondo del Dialogo a través del Bitmap de fondo. ¿Entiendes? Y queda feísimo. Además, lo mismo ocurre con otros controles, si pones encima del bitmap de fondo un TSAY transparente, ocurre exactamente lo mismo, es transparente, sí, pero debajo no se vé lo que tendría que verse, el bitmap que hay debajo, sino lo que hay debajo de ese bitmap. Parece un problema de sincronismo entre los distintos displays de los distintos controles, primero se debería de dibujar el dialogo, con su bPainted y todo, y después el de los controles, pero parece que no lo hace asi y se mezclan los contextos (hDc's) y se dibujan en orden incorrecto.
La verdad es que tienen pinta de ser un problema de la versión de FWH que tengo, la de enero 2007. A lo mejor en versiones más reciente se ha corregido.
Si alguien tine alguna sugerencia, por favor. Mi e-mail es antolin28@gmail.com, se lo agradecería infinitamnete.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby Antonio Linares » Wed Apr 16, 2008 9:38 am

Antolin,

En fwh\samples\BmpOnBmp.prg tienes un ejemplo de lo que quieres hacer (creo) :-)
regards, saludos

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

Postby antolin » Wed Apr 16, 2008 6:55 pm

Antonio, el ejemplo es justamente lo contrario de lo que quiero hacer.
En el ejemplo, se difine (@ 1,1...) un bitmap de fondo para el dialogo y en su oBmp:bPainted se dibuja un bitmap transparente encima del primero, y funciona. Yo lo que quiero es exactamente lo contrario, dibujar el fondo en el bPainted del dialogo y DEFINEir un bitmap transparente encima y no funciona. Que es cuando creo que se lian los HDC's.
Me diras que soy dificil y que lo haga como en el ejemplo, pero no me sirve, pues lo que me pasa es que he hecho una Clase a partir de TBITMAP que funciona como un boton sensible al ratón y se tiene que poder REDEFINEir sobre la marcha y con la opción TRANSPARENT y funcionar con un bitmap de fondo. Pero es que tampoco funcionan los says transparentes en mi version de FWH. Y creo que es un problema de version.
A ver si mañana te posteo una imagem del efecto, que lo tengo en el trabajo.

Gracias por la contestación.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby antolin » Thu Apr 17, 2008 4:19 pm

Gracias fernando, pero eso no es lo que busco, pues necesito que el bitmap esté centrado en el dialogo como veras en la foto:
Image
Se trata de un cuadro de dialogo azul oscuro con el bitmap en el centro (El avion con el degradado gris) y el resto de controles y bitmap's encima.
Como verás los say's de abajo salen mal (los de arriba no son TSAY 's de FWsino TGSAY's mios transparentes). Abajo he puesto TSAY's para que veas que no salen bien. La otra flecha apunta a los botones. Y es que debería de quedar así:
Image
He sustituido los TSAY's por TGSAY's y los bitmaps los he redibujado con degradado de fondo y estan puestos sin el transparent. Pero esa no es la solución pues debería de poder conseguir lo que quiero.
El caso es que si te das cuenta, los escudos son bitmaps, transparentes y si salen bien pues van dibujados en el mismo módulo que el fondo pero los botones van dibujados en sus respectivos controles y salen mal.
Ese es el fallo que haría falta solucionar, pues de lo contrario no puedo completar mi clase para botomes sensibles al ratón y algunas cosas más que tengo en mente. (trasnparencias, blendings, ets..., aunque algunas ya las he solucionado, fijate en la sombra de debajo del dialogo)
Por si sirve de algo, me he dado cuenta que los TSAY no funcionan cuando en el fichero de recursos se define como STATIC TEXT, sin embargo sí que se transparentan bien si vienen como BORLAND STATIC TEXT a lo mejor por ahí andan los tiros.
A ver si hay alguien capaz de solucionar este tema
Gracias.

Es es básicamente el código empleado:

...
hBit[1] := LoadBitmap( GetResources(),"AFONDO" ) <--- es el bitmapo de fondo
hBit[2] := LoadBitmap( GetResources(),cEsdo ) <--- es el escudo de abajo a la izquierda
hBit[3] := LoadBitmap( GetResources(),"BANCOP" ) <--- es el escudo de arriba a la derecha
hBit[4] := ResBmpAlpha( "MRF_F","MRF_B" ) <--- es el repujado de debajo del avion
*
...
*
DEFINE DIALOG oDMain RESNAME "RENDTO" TITLE " Rendimiento P3" COLOR 0,CLR_OBLUE
...
...
REDEFINE GSAY oGet[15] VAR aVar[15] ID 551 OF oDMain CENTER BOTTOM COLOR CLR_AZUL TRANSPARENT FONT oFont[2]
REDEFINE GSAY oGet[16] VAR aVar[16] ID 552 ... etc...
*
REDEFINE BITMAP oBot[1] NAME "IMPRIME" ID 451 OF oDMain TRANSPARENT <--- ES EL BOTON IMPRIMIR
REDEFINE BITMAP oBot[2] NAME "SALIR" ID 452 OF oDMain TRANSPARENT <--- ES EL BOTON SALIR

*
oDMain:bPainted := { |hDc| PaintFond(hDc,hBit,hPen) }
oGet[1]:bLClicked := { || MovWin(oDMain,oCur) }
oDMain:lHelpIcon := .F.
ACTIVATE DIALOG oDMain CENTER ON INIT oDMain:Move(200,300,459,440)
...
...
FUNCTION PaintFond(hDc,hB,hP)
LOCAL hOPen := SelectObject(hDc,hP)
*
PalBmpDraw( hDc, 35, 4, hB[1], 0 )
TransparentBmp( hDc, 365,15, hB[2], CLR_TRANSP ) <--- COMO TransBmp PERO CALCULA EL TAMAÑO DEL BITMAP
TransparentBmp( hDc, 58, 374, hB[3] )
BlendBitmap( hDc, 185, 15, hB[4], 256 ) <--- AlphaBlend PROPIO
*
MoveTo(hDc, 007, 228)
LineTo(hDc, 449, 228)
MoveTo(hDc, 007, 331)
LineTo(hDc, 449, 331)
*
SelectObject(hDc,hOPen)
RETURN NIL
...
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby Antonio Linares » Fri Apr 18, 2008 12:25 pm

Antolín,

Puedes enviarme un email ? Gracias

Te he enviado varios pero no obtengo respuesta tuya. No se si te estarán llegando.
regards, saludos

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

Postby antolin » Sun Apr 20, 2008 8:14 pm

Gracias Fernando, pero lo del alphablending lo tengo solucionado. El problema creo que esta en la clase TBITMAP, pero no doy con la solución
Un saludo
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests