Page 1 of 1

Brush... pero de TEXTO ?

Posted: Thu Jun 28, 2007 4:03 pm
by Adolfo
Hola amigos Fivewinners....

Alguien sabe como, se le ocurre, tiene una idea de como.....

Poner un texto de brush, no puede ser un bitmap, ya que ese texto deberia cambiar de acuerdo a una funcion externa, y no puedo generar tantos bitmaps como textos voy a necesitar.

Lo intente con lo siguiente en la Clausula ON INIT FONDO(ownd)

//-----------------------------------
Function Fondo(oWnd)
Local Texto:=TraeTexto()

For x=1 TO 80
@x,1 say Texto of oWnd Color CLR_HBLUE
Next

Return Nil

... pero queda sobre mi toolbar y un bitmap que tengo centrado en la window.

Cualquier ayuda sera bienvenida...

Grax.

Desde Chile
Adolfo Lagos

Posted: Thu Jun 28, 2007 4:33 pm
by antolin
Intentalo con ExTextOut() desde el pintado del dialogo/Window (el :bPainted) antes de colocar el bitmap con PalBmpDraw()
Calcula las coordenadas para poner la primera linea de texto por debajo de la toolbar.
Suerte
Saludos

Posted: Thu Jun 28, 2007 6:34 pm
by sysctrl2
Adolfo

ACTIVATE WINDOW oWnd MAXIMIZED ON PAINT ( _miTxt(hDC) )


function _miTxt( hDC )
Local oFont
DEFINE FONT oFont NAME "ROMAN" SIZE 0,-12 BOLD
oFont:Activate( hDC )
SetBkMode(hDC,1)
SetTextColor(hDC,CLR_BLUE)
DrawText(hDC,"SysCtrl Software",{10, 20, 500, 600}, nOr( 1, 4 ) )
RETURN NIL

Espero te sirva

Saludos...

Posted: Fri Jun 29, 2007 4:45 pm
by Adolfo
Antolin, Syscrtl

Gracias por sus respuestas,

primero... ala funcion mitxt es llamada cada vez que paso por encima de un icono, menu etc.
Segundo, desgraciadamente no veo nada, trate de cambiar parametros como las 4 coordenadas, color, tipo y tamaño de la letra y nada.. asi que no pude hacerlo funcionar.

Sobre el ExtTextOut(), estoy rcien viendo como implementarlo.. les comunco si tuve exito

Desde Chile
Adolfo

Posted: Fri Jun 29, 2007 9:26 pm
by antolin
Supongo que sería algo asi:

DEFINE FONTO oFont ...
DEFINE Bmp ....
DEFINE DIALOG oDlg ...
...
oDlg:bPainted := { |hDc| MiPaintBrush(hDc,oFont,Bmp) }
...
ACTIVATE DIALOG oDlg ...

FUNCTION MiPaintBrsuh(hDc,oFont,Bmp)
LOCAL nX,nY
LOCAL OldFont := SelectObject(hDC,oFont:hFont)

FOR nX = ... TO ... STEP ... // FOR nHorzDesde to nHorzHasta STEP AnchoTexto + Separcion Horizontal entre Textos
FOR nY = ... TO ... STEP ... // FOR nVertDesde to nVertHasta STEP AltoTexto +Separacion Vertical entre Lineas
ExTextOut(hDc,nX,nY,{nX,nY,nX+AnchoTexto,nY+AltoText},"TEXTO A DESPLEGAR")
NEXT
NEXT
SelectObject(hDC,OldFont)
PalDrawText(hDc,X..,Y..,Bmp:hBitmap, Bmp:hPalette,[AnchoBmp,AltoBmp] )
RETURN NIL

Lo más tedioso es calcular las coordenadas. Paciencia.
Saludos

Posted: Fri Jun 29, 2007 9:31 pm
by antolin
Tambien puedes probar con DrawText() o WSay() en lugar de ExTextOut() son muy similares. Con fondo transparente u Opaco, Etc... Consulta las ayudas del FWH para ver el uso de esas functiones.

Posted: Fri Jun 29, 2007 9:46 pm
by sysctrl2
Adolfo,

la funcion _MiTxt() solo puedes llarme una vez,

utilizando una variable publica,,

public lMiTxt := .t.


if lMiTxt
_miTxt()
lMiTxt := .f.
endif

Posted: Fri Jun 29, 2007 9:53 pm
by antolin
Adolfo, en mi posta anterior, con las prisas, he puesto PalDrawText(hDc,X..,Y..,Bmp:hBitmap, Bmp:hPalette,[AnchoBmp,AltoBmp] )
en lugar de PalBmpDraw(hDc,X..,Y..,Bmp:hBitmap, Bmp:hPalette,[AnchoBmp,AltoBmp] )

Mil perdones

Posted: Tue Jul 03, 2007 3:29 pm
by Adolfo
Gracias a Todos

Lo he podido hacer mezclando ambas partes de las soluciones que me han enviado, pero en vez de usar ExtTextOut() he utilizado WSay() ya que me permite cambio de color de letra y fondo, y si la deseo transparente o no.

Gracias