Page 1 of 1

SOLUCIONADO Alternar fondo de pantalla BMP segun valor

PostPosted: Fri Sep 15, 2023 10:10 am
by PP1963
Buenos días,
Necesito alternar la imagen del fondo BMP de de pantalla (completa), según un valor, solo hay 2 posibilidades, o 1 ó 2.
Consigo que abra el BMP del 1er valor, pero al capturar el segundo, permanece en pantalla el primero.
Se que hago algo mal. Es la primera vez que me meto en este charco.
Gracias de antemano.
Code: Select all  Expand view
if valor3 = 1
    @  0,0 BITMAP oBmp FILE "bmp1.bmp" OF oDlg pixel size 1920,1080
elseif valor3 = 2
  @  0,0 BITMAP oBmp FILE "bmp2.bmp" OF oDlg pixel size 1920,1080
endif

Re: Alternar fondo de pantalla BMP segun valor obtenido.

PostPosted: Fri Sep 15, 2023 12:20 pm
by cmsoft
Hola, en que contexto lo haces? Hay un valor que cambia en el transcurso del programa y queres actualizar la imagen?
Prueba recargando la imagen con oBmp:LoadImage("bmp2.bmp")

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()
                                                                     
   local n := 1, oBmp, oBtn, oDlg
   DEFINE WINDOW oDlg TITLE "Cambiar imagen"    
   @ 2, 2 BTNBMP oBtn OF oDlg ACTION ((n := IF(n = 1, 2, 1),;
          oBmp:LoadImage(IF(n=1,"..\bitmaps\cara2.bmp","..\bitmaps\cara3.bmp")),;
          oBmp:Refresh())) PROMPT "Cambiar";
   SIZE 60,60 ADJUST
   @  2,100 BITMAP oBmp FILE "..\bitmaps\cara2.bmp" OF oDlg pixel size 1920,1080
 
   ACTIVATE WINDOW oDlg            
   
   

return nil

Re: Alternar fondo de pantalla BMP segun valor obtenido.

PostPosted: Fri Sep 15, 2023 1:35 pm
by karinha

Re: Alternar fondo de pantalla BMP segun valor obtenido.

PostPosted: Fri Sep 15, 2023 2:17 pm
by PP1963
Muchísimas gracias por vuestra ayuda. Ha funcionado con PALMBMPDRAW
Un abrazo.

Enviado desde mi 22081212UG mediante Tapatalk

Re: Alternar fondo de pantalla BMP segun valor obtenido.

PostPosted: Fri Sep 15, 2023 2:31 pm
by PP1963
Code: Select all  Expand view


if valor3 = 1

    oBmp = readbitmap( 0, "bmp1.bmp" )
    cambiaback( oDlg, hDC2, oBmp )  

elseif valor3 = 2

     oBmp = readbitmap( 0, "bmo2.bmp" )
    cambiaback( oDlg, hDC2, oBmp )

endif[

STATIC FUNCTION cambiaback( oWnd, hDC2, hBmp )

    LOCAL nTop:=0, LOCAL nLeft:=0, nWidth:=oWnd:nWidth(), nHeight:=oWnd:nHeight()

    IF hBmp = 0
      RETURN NIL
    ENDIF

    PALBMPDRAW( hDC2, nTop, nLeft, hBmp, , nWidth, nHeight )

    RETURN NIL