Page 1 of 1

Texto vertical

PostPosted: Sun Apr 23, 2006 4:52 am
by wmormar
[img=http://img225.imageshack.us/img225/2315/vertical4ts.th.jpg]

Amigos, necesito generar un texto VERTICAL desde recursos, lo estoy intentando con la clase TSay y el Font con NESCAPEMENT, se ve como la imagen.

Alguna sugerencia y/o comentario?

Mil gracias de antemano

PostPosted: Sun Apr 23, 2006 2:02 pm
by Armando
William:

A menos de que se trate de un texto variable te sugiero utilices una imágen creada con PaintShop o Corel.

Si es obligatorio el texto, "Juega" con la alineación (Izquierda, Centrado, Derecho, Ajustado) del texto en WS.

Saludos, Armando

PostPosted: Sun Apr 23, 2006 2:38 pm
by goosfancito
Si mal no recuerdo la clase del señor MERCADO no hacia texto en cualquier angulo? Tsay creo o algo asi.

Saludos

PostPosted: Sun Apr 23, 2006 10:33 pm
by Raymundo Islas M.
William :

Esta funcion te puede ayudar, pertenece a Cesar Lozada.

******************************************************************************
* Function SayRotated(oWnd,Y,X,cPrompt,oFont,nClrText,nClrPane,l3D)
* Dibuja un texto rotado
* oWnd: Ventana / diálogo
* Y,X: coordenadas en pixels del inicio del texto (nTop, nLeft)
* oFont: Fuente (definir antes) // debe ser True Type
* nClrText,nClrPane: Colores de texto y fondo. Si éste ultimo es nil se
* pinta transparente
* l3D: Con efecto 3D
*
* César E. Lozada (cesarlozada@hotmail.com)
* Los Teques, Venezuela Marzo 25, 2003
*
******************************************************************************
#include "Fivewin.ch"
******************************************************************************
Function Test
Local oDlg, oFont1, oFont2
DEFINE FONT oFont1 NAME "Arial" SIZE 0,-36 NESCAPEMENT 90*10
DEFINE FONT oFont2 NAME "Arial" SIZE 0,-24 BOLD NESCAPEMENT 45*10

DEFINE DIALOG oDlg FROM 0,0 TO 20,40 COLOR CLR_BLACK,CLR_WHITE;
TITLE "Textos rotados"

ACTIVATE DIALOG oDLg CENTERED;
ON PAINT( SayRotated(oDlg,235,0,"90 grados 3D",oFont1,,,.t.),;
SayRotated(oDlg,125,50,"45 grados",oFont2,CLR_HRED,CLR_YELLOW,.f.))

RELEASE FONT oFont1
RELEASE FONT oFont2
return
******************************************************************************
Function SayRotated(oWnd,Y,X,cPrompt,oFont,nClrText,nClrPane,l3D)
Local hDC:=oWnd:hDC
DEFAULT nClrText:=CLR_BLUE, l3D:=.T.

IF l3D
DrawRotated(hdc, cPrompt, Y + 1, X + 1, CLR_BLACK,nClrPane,oFont)
DrawRotated(hdc, cPrompt, Y - 1, X - 1, nClrText,nClrPane,oFont)
ENDIF
DrawRotated(hdc, cPrompt, Y , X , nClrText,nClrPane,oFont)

return
******************************************************************************
Static Function DrawRotated(hDC,cPrompt,Y,X,nClrText,nClrPane,oFont)
Local hOldFont, nOldMode, nOldClrText, nOldClrPane

nOldClrText:=SetTextColor(hDC,nClrText)
if nClrPane<>nil
nOldClrPane:=SetBkColor(hDC,nClrPane)
else
nOldBkMode:=SetBkMode(hDC,1)
endif
hOldFont:=SelectObject(hDC,oFont:hFont)
TextOut(hDC,Y,X,cPrompt,Len(cPrompt))
SelectObject(hDC,hOldFont)
if nClrPane<>nil
SetBkColor(hDC,nOldClrPane)
else
SetBkMode(hDC,nOldBkMode)
endif
SetTextColor(hDC,nOldClrText)
return
******************************************************************************

Ya la he probado y funciona muy bien.

Espero te sirva.

Saludos

PostPosted: Mon Apr 24, 2006 4:40 am
by wmormar
Gracias a todos por contestar, haré las pruebas.

Siempre es bueno saber que contamos con ustedes, gracias por estar.