Page 1 of 1

Poner texto sobre Bitmaps

Posted: Fri Dec 16, 2005 4:55 pm
by VeRCE
Tengo la siguiente Ventana:

DEFINE WINDOW oWnd FROM 0,0 TO 45,90 TITLE NAMEPROGRAM ICON oIcon COLOR CLR_BLACK,RGB(172,194,139)

DEFINE BITMAP oBitmap FILE ".\BMPS\FONDO.BMP"


ACTIVATE WINDOW oWnd MAXIMIZED ;
ON PAINT ColocaBitmaps( oWnd, hDC, oBitmap:hBitmap, oBitmap )

STAT FUNC ColocaBitmaps( oWnd, hDC, hBmp, oBitmap )
LOCAL nTop := 0
LOCAL nLeft := 235
LOCAL nWidth := oWnd:nWidth() - 235
LOCAL nHeight := oWnd:nHeight()
IF hBmp = 0
RETURN NIL
ENDIF
PALBMPDRAW( hDC, nTop, nLeft, hBmp , , nWidth, nHeight )
Return NIL

Ahora bien, NECESITO escribir encima del bitmap
varios textos y en varios tipos de letras y colores.
Es posible ?
Como se hace ?

Gracias de antemano.

Posted: Fri Dec 16, 2005 5:37 pm
by Marcelo Via Giglio
Hola,

pues ahora tu contenerdor seria el BITMAP, @ 10,10 SAY "hhhh" OF oBmp
deberia funcionar

saludos

Marcelo

Posted: Fri Dec 16, 2005 5:50 pm
by Alfredo Arteaga
Se me ocurre usar:

DrawText( <hDC>, <cText>, <aRect>, <nStyle> )

Saludos.

Posted: Fri Dec 16, 2005 7:01 pm
by Willi Quintana
Yo le hago asi:

DEFINE WINDOW oWnd...


ACTIVATE WINDOW oWnd ON INT (ResumCtas(oWndl) )
..
..
Function ResumCtas(oWndl)
..
..
@90, SAY cDatos OF oWnd
..
Return(Nil)

Salu2

Posted: Fri Dec 16, 2005 8:47 pm
by jlcapel
Juan Carlos,

Tal como dicen Alfredo y Willi debería funcionar. Sin embargo... si esos SAYS los escribes encima de los bitmaps deberás preocuparte que en cada repintado del bitmap vuelvas a escribir el say encima del bitmap. Una posible solución podría ser añadir el código para escribir esos SAYS en la función que utilizas para pintar los bitmaps.

Espero que te sea de ayuda.

Saludos,
José Luis Capel
www.capelblog.com

Posted: Fri Dec 16, 2005 10:05 pm
by VeRCE
Amigos, ninguna forma fucionó!

SetBkMode( oBitmap:hDC, 1 )
TextOut( oBitmap:hDC, 1, 1, "PROBANDO EL TEXTO" )
DrawText( oBitmap:hDC, "OTRA PRUEBA DEL TEXTO", { 1,1,500,500 } )


Alguna otra alternativa ???

Posted: Fri Dec 16, 2005 10:07 pm
by VeRCE
Tampoco esta:

@ 1,1 SAY oSay PROMPT "PROBANDO" OF oBitmap

:(
Help please !!!

Posted: Fri Dec 16, 2005 11:05 pm
by jlcapel
Juan Carlos,

Este trozo de código es la función DRAW del ejemplo testbrus.prg que hay en la carpeta SAMPLES.

Code: Select all

function Draw( oWndC, cBitmap )

   local hBitmap

   oWndC:GetDC()

   hBitmap = ReadBitmap( oWndC:hDC, cBitmap )
   DrawBitmap( oWndC:hDC, hBitmap, 0, 0 )

   // jlcr
   DrawText( oWndC:hDC,"www.capelblog.com", {100,0,100,100})
   // jlcr 


   oWndC:ReleaseDC()

   DeleteObject( hBitmap )


return nil
Sustituye este código por el que hay en testbrus.prg

Espero que sea de ayuda.

Saludos,
José Luis Capel
www.capelblog.com

Posted: Fri Dec 16, 2005 11:49 pm
by R.F.
Jose Luis:

Se te olvido:

SetBkMode(oWndc:dc,0) para hacer el texto transparente

o

SetBkMode(oWndc:dc,1) para hacerlo con opaco

Posted: Sat Dec 17, 2005 7:59 am
by jlcapel
René,

Code: Select all

Se te olvido:

SetBkMode(oWndc:dc,0) para hacer el texto transparente

o

SetBkMode(oWndc:dc,1) para hacerlo con opaco
Solo me centré en la impresión del texto. Pero es cierto que le falta añadir la transparencia.

Gracias por la aclaración.

Saludos,
José Luis Capel

pintar encima del bitmap

Posted: Sun Dec 18, 2005 4:40 pm
by Paco Garcia
Creo que deberias implementar tus funciones de pintado en el bPainted del bitmap

oBmp:bPainted := {|hDC| MiFuncion( hDC ) }

function Mifuncion( hDC )

drawtext( hdc, "hola", rc, 0 )

por ejemplo. Las coordenadas de rc son relativas al bitmap

Un saludo