Ayuda con poner Texto Vertical

26/04/2010 - 23:38 por edcha | Informe spam
Gracias de antemano por responderme el asunto es que estos creando el
siguiente texto para imprimir:
string txt_Rect0 = "Número de diferentes clases nombradas y conducidas
durante el mes";

para ello creo el rectángulo donde se dibujara el texto.
Rectangle rect_Txt7 = new Rectangle (new Point(11.9f, 6.9f),
new Size (1.3f, 5.8f));

Ahora formateo el string asi
StringFormat str_Format1 = new StringFormat();
str_Format1.Trimming = StringTrimming.Word;
str_Format1.LineAlignment = StringAlignment.Center; //horizontal
plane
str_Format1.Alignment = StringAlignment.Center; //vertical plane
str_Format1.FormatFlags = StringFormatFlags.DirectionVertical;

pero al imprimirlo lo hace verticalmente pero segun lo veo yo al revez
pues lo imprime de la siguiente forma.
conducidas durante el mes
Número de diferentes clases nombradas y

Pero lo que quiero es que me lo imprima asi
Número de diferentes clases nombradas y
conducidas durante el mes

desde luego en la dirección vertical, obviamente no puedo escribirlo
aquí verticalmente pero imaginasen las dos formas que les puse en
formato vertical.

¿Existe alguna solución para esto? me imagino que sí pero soy nuevo y
necesito ayuda

Gracias

Preguntas similare

Leer las respuestas

#1 Leandro Tuttini
27/04/2010 - 06:04 | Informe spam
hola

te refierea a hacer algo como esto

Cómo: Crear texto vertical
http://msdn.microsoft.com/es-es/library/da9f790s(VS.80).aspx

alli solo muestra una linea, peor si dejas solo estas propeidades que
alli define, como sale el texto ?

saludos
Respuesta Responder a este mensaje
#2 edcha
27/04/2010 - 21:46 | Informe spam
Sí, correcto, ese ejemplo es el que estoy utilizando y en ese caso lo
que pone en vertical el texto es lo siguiente:

str_Format1.FormatFlags = StringFormatFlags.DirectionVertical;

pero al ser mucho texto se forman dos lineas y la primera de la
derecha resulta ser la siguiente:
"conducidas durante el mes"

y a la izquierda de esa se coloca la siguiente:
"Número de diferentes clases nombradas y"

Pero segun me parece a mi la primera a la derecha debe ser la
siguiente.
"Número de diferentes clases nombradas y"

Para que se lea correctamente. Si gustas lo pruebas con ese ejemplo
todo el texto por favor y mira como aparece.

¿Ahora bien, existe otra forma de hacerlo?

Gracias
Respuesta Responder a este mensaje
#3 RFOG
28/04/2010 - 10:27 | Informe spam
Hace bastante tiempo tuve problemas con poner texto en vertical. No me
pasaba lo que a ti pero casi. Al final lo solucioné pintando en un bitmap
oculto, rotándolo por código y pintándolo a mano en la pantalla.


On Tue, 27 Apr 2010 21:46:05 +0200, edcha wrote:

Sí, correcto, ese ejemplo es el que estoy utilizando y en ese caso lo
que pone en vertical el texto es lo siguiente:

str_Format1.FormatFlags = StringFormatFlags.DirectionVertical;

pero al ser mucho texto se forman dos lineas y la primera de la
derecha resulta ser la siguiente:
"conducidas durante el mes"

y a la izquierda de esa se coloca la siguiente:
"Número de diferentes clases nombradas y"

Pero segun me parece a mi la primera a la derecha debe ser la
siguiente.
"Número de diferentes clases nombradas y"

Para que se lea correctamente. Si gustas lo pruebas con ese ejemplo
todo el texto por favor y mira como aparece.

¿Ahora bien, existe otra forma de hacerlo?

Gracias





Microsoft Visual C++ MVP => http://geeks.ms/blogs/rfog
Los puñales y las lanzas no son tan afilados como las lenguas.
Respuesta Responder a este mensaje
#4 edcha
29/04/2010 - 05:47 | Informe spam
Bien si esa forma funciona ¿como hago para rotar el texto?

Gracias
Respuesta Responder a este mensaje
#5 RFOG
29/04/2010 - 10:17 | Informe spam
edcha explained :
Bien si esa forma funciona ¿como hago para rotar el texto?

Gracias



Es algo complicadillo. Te pego código que tengo hecho de lo que te
comenté. Está en C++/CLI pero traducirlo a C# es trivial. Te pongo
incluso el comentario del código de lo que no me funcionaba:

if(m_idxCurrentEditing==1)
{
bmp=gcnew
Bitmap(m_editNumberRect[m_idxCurrentEditing].Width,m_editNumberRect[m_idxCurrentEditing].Height,e->Graphics);
g=Graphics::FromImage(bmp);
g->TranslateTransform((float)(m_editNumberRect[m_idxCurrentEditing].Width+15),(float)m_editNumberRect[m_idxCurrentEditing].Height);
g->ScaleTransform(-1,-1);
g->DrawString(m_editNumber[0],m_textFont,Brushes::Black,0,0,m_stringFormat);
e->Graphics->DrawImage(bmp,m_editNumberRect[0]);
}

/* ME C*GO EN SU P*TA M*DRE. ASÍ NO FUNCIONA. BUG.

e->Graphics->TranslateTransform(0,(float)m_editNumberRect[m_idxCurrentEditing].Height); //+15
is font displacemente correction (well done is to get metrics).
e->Graphics->RotateTransform(180);

e->Graphics->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,m_editNumberRect[m_idxCurrentEditing],m_stringFormat);
*/

La idea es que captures el evento paint del label o en donde quiera
pintar y ahí primero crees un bitmap (las dos primeras líneas después
de la llave de apertura), apliques propiedades al mismo, pintes y
copies lo pintado a la pantalla.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida