Page 1 of 1

CAMBIAR IMAGEN DE FONDO

PostPosted: Mon May 10, 2010 6:36 pm
by Marco Augusto
CON ESTA FUNCION ASIGNO UNA IMAGEN COMO FONDO DE VENTANA

DEFINE BITMAP oBmpTIT FILENAME "DIB.bmp"

DEFINE WINDOW oWnd TITLE cTitle ;
COLORS CLR_BLACK, CLR_NBLUE ;
MENU BuildMenu() MENUINFO 8 ;
ICON oIco MDI

ACTIVATE WINDOW oWnd MAXIMIZED ;
ON PAINT DrawBitmap( hDC, oBmpTIT:hBitmap, 0, 0, oWnd:oWndClient:nWidth(), ;
oWnd:oWndClient:nHeight() )


COMO LA PUEDO CAMBIAR EN TIEMPO DE EJECUCION ?

GRACIAS

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Mon May 10, 2010 7:00 pm
by Daniel Garcia-Gil
Marco..


Intenta con:

oBmp:LoadBmp( cBmpFile )
oWnd:Refresh()

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Tue May 11, 2010 3:01 pm
by Marco Augusto
Gracias por tu antencion

Pero no funciona

Sí toma el nuevo bitmap
y lo cambia hasta que minimizo y maximizo la ventana

No actualiza la ventana en el momento

ya probé con sysrefresh()
oWnd:refresh()

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Tue May 11, 2010 3:50 pm
by Daniel Garcia-Gil
Marco

Disculpa fue mi error, no me di cuenta que trabajaban en MDI hazlo asi

oWnd:oWndClient:Refresh()

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Tue May 11, 2010 8:11 pm
by Marco Augusto
Muchas gracias
Funcionó perfecto

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Sun Jan 23, 2011 12:49 am
by MarioG
Retomo este hilo que es similar a mi problema.
Este es mi codigo:
Code: Select all  Expand view

...
soWnd0:bPainted := {|| SetLogo( oConxFTP ) }
...
static procedure SetLogo( oConxFTP )
local cImage:= BeforAtNum( "\", SubStr(  oConxFTP:cPathDbf,3 ) ) +"\bmp\SiGeCo_iGO32.jpg", ;
      nTop, ;
      nLeft

   @ 0, 0 IMAGE soImg SIZE 75, 75 PIXEL NOBORDER OF soWnd0 UPDATE

   nTop := ( soWnd0:nHeight - soImg:nHeight ) / 2
   nLeft:= ( soSplit:nLast - soImg:nWidth ) /2  //soSplit:nFirst+

   soImg:Progress( .f. )
   soImg:LoadBmp( cImage )
   soImg:Move( nTop, nLeft,,,TRUE )
   soImg:Refresh()


En principio no logro ponerlo en el centro de la ventana
Image
No obstante lo que muestro es en un monitor de 1440x900. Si ejecuto el prg en otro de res. 1024x780 la figura ya no entra en el ercuadro
Lo mismo ocurre con el siguiente dialogo:
Image

al ejecutarlo en otra resolución el dialogo (que esta en un recurso como style dialgo frame, caso contrario se lo puede mover con el mouse) se muestra fuera de la ventana
Cual es la mejor manera de trabajar con splitters y para distintas resoluciones?

muchas gracias

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Mon Jan 24, 2011 6:37 pm
by sysctrl2
Mario yo lo hago mas o menos como se indica en el siguiente codigo.

Code: Select all  Expand view
cFileFondo:="Logo.jpg"
oBmp := TImage():Define( ,cFileFondo )
DEFINE WINDOW oWnd  MDI
DEFINE BUTTONBAR oBar OF oWnd SIZE 80, 60 2007 //LEFT //RIGHT

set MESSAGE of oWnd to 'mensaje';
      DATE TIME KEYBOARD COLOR '*rb+/w' FONT oFont2 2007

      nAncho := GetSysMetrics( 0 )
      nAlto  := GetSysMetrics( 17 ) - GetSysMetrics( 15 ) - oBar:nHeight() - oWnd:oMsgBar:nHeight()

      oWnd:bPainted  := {|hDC| PalBmpDraw( hDC,0,0,oBmp:hBitmap,,nAncho, nAlto,, (.T.)) }

ACTIVATE WINDOW oWnd MAXIMIZED
 


saludos..

Re: CAMBIAR IMAGEN DE FONDO (SOLUCIONADO)

PostPosted: Wed Jan 26, 2011 1:02 am
by MarioG
Cesar; muchisimas gracias, ya mi matemáticas no daba para más! :shock: :)
Lo que yo necesitaba era usar esta funcion PalBmpDraw( hDC, ....) pues me hice un lio con la TImage declarandola como comando

Saludos

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Fri Jul 08, 2011 7:31 pm
by Willi Quintana
Hola,, Como le haces,, a mi no me funciona el cambio del imagen en una MDI en tiempo de ejecucion,,
Salu2

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Mon Jul 11, 2011 1:12 pm
by MarioG
Willi;
No se si es aplicable en entorno MDI, nunca lo probé.
Lo que hago es lo siguiente:

// Ventana
DEFINE ICON aO[_Ico] RESNAME "iGO"

DEFINE WINDOW soWnd0 ;
TITLE "Protocolo de Transferencia de Archivos (FTP) | Origen: "+Upper( oConxFTP:cPuntoVta ) ;
ICON aO[_Ico] COLOR CLR_BLACK,CLR_BLACK ;
NOMAXIMIZE ;
FROM 2000,5 TO 2001,5 ;
MENU BuildMenu()
...

soWnd0:bPainted:= {|hDC| SetLogo( hDC ) }

...
ACTIVATE WINDOW soWnd0 ON INIT ( soSMsg:Hide(), soWnd0:Center() )
// Fin

// ········································································· \\
// L O G O
static procedure SetLogo( hDC, oConxFTP )
local oImg, ;
cLogo:= ".\bmp\SiGeCo_iGO32.jpg"

oImg:= TImage():Define( , cLogo )

PalBmpDraw( hDC, (soWnd0:nHeight-oImg:nHeight ) /3, soSplit:nFirst+( soSplit:nLast-oImg:nWidth) /2, oImg:hBitmap,, oImg:nWidth, oImg:nHeight,, TRUE )

// Fin

Re: CAMBIAR IMAGEN DE FONDO

PostPosted: Mon Jul 11, 2011 1:50 pm
by Willi Quintana
Hola,,, si funciona en MDI, gracias a todos por las sugerencias,,,
Salu2