Page 1 of 1

Error en clase TBitmap

Posted: Mon Mar 20, 2006 11:16 am
by jmartial
Hola,

Hasta esta versión, lo siguiente se veía bien:

REDEFINE BITMAP ::oBitmap ID 114 OF ::oDlg RESOURCE "PDAFONDO"

En esta versión, se ve un recuadro blanco alrededor, por lo que le añadido la clausula TRANSPAREN y también he probado con oBmp:lTransparent := .T.

En los 2 casos me genera un error de ejecúción:
Error de argumento %
en TCONTROL:PAINT(0)

Mirando el código he visto que se produce aquí:

if ! ::lTransparent
FillRect( ::hDC, GetClientRect( ::hWnd ), ::oBrush:hBrush )
else
SetBrushOrgEx( ::hDC, 8 - ::nLeft() % 8, 8 - ::nTop() % 8 )
FillRect( ::hDC, GetClientRect( ::hWnd ), ::oWnd:oBrush:hBrush )
endif


¿Como se podría solucionar?

Un Saludo,
Joaquín

Posted: Mon Mar 20, 2006 1:43 pm
by Antonio Linares
Joaquín,

Prueba a cambiar el color del pixel 0, 0 del bitmap, ya que se usa para determinar el color transparente del bitmap.

Posted: Mon Mar 20, 2006 5:20 pm
by jmartial
Antonio,

Eso no responde a que lTransparent := .T. da error y que ha .F. pone el bitmap transparente, siendo el efecto que se quiere conseguir precisamente el contrario.

No obstante, lo he solucionado de la siguiente manera:

::oBitmap:SetColor( , ::oFrame1:nClrPane )

Con esto ha tomado el color del control de fondo perfectamente.

Pero ahí dejo la duda, ¿por qué la clausula lTransparent funciona mal?

Un Saludo y gracias
Joaquín