Pintar texto de abajo hacia arriba

20/12/2006 - 17:18 por RFOG | Informe spam
Hola

A ver si alguien lo sabe, yo no lo encuentro por ningún lado.

Tengo que pintar un texto de abajo hacia arriba en vertical. En principio no
es problema, porque asigno DirectionRightToLeft y DirectionVertical en el
formato de la cadena y ya está, pero el problema es que lo hace de arriba
hacia abajo y justo a revés. Vamos, que debería darle la vuelta 180º.

Con SetTransformation lo puedo hacer, y también pintando sobre un bitmap y
luego copiándolo rotado 180º, pero no me creo que haya alguna forma de
hacerlo de forma normal, con alguna propiedad de DrawString...



Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El verdadero modo de no saber nada es aprenderlo todo a la vez.

Preguntas similare

Leer las respuestas

#1 RFOG
20/12/2006 - 21:59 | Informe spam
RFOG explained on 20/12/2006 :
Hola

A ver si alguien lo sabe, yo no lo encuentro por ningún lado.

Tengo que pintar un texto de abajo hacia arriba en vertical. En principio no
es problema, porque asigno DirectionRightToLeft y DirectionVertical en el
formato de la cadena y ya está, pero el problema es que lo hace de arriba
hacia abajo y justo a revés. Vamos, que debería darle la vuelta 180º.

Con SetTransformation lo puedo hacer, y también pintando sobre un bitmap y
luego copiándolo rotado 180º, pero no me creo que haya alguna forma de
hacerlo de forma normal, con alguna propiedad de DrawString...



Este código lo hace, gracias al Petzold y a un poco de acordarme de la
madre de alguien (directamente sobre la ficha -lo comentado-, no
funciona, ¿Cómo le habrá funcionado a Pezold? Misterios sin resolver):

Bitmap ^bmp=gcnew
Bitmap(m_editNumberRect[m_idxCurrentEditing].Width,m_editNumberRect[m_idxCurrentEditing].Height,e->Graphics);
Graphics ^g=Graphics::FromImage(bmp);
g->TranslateTransform((float)(m_editNumberRect[m_idxCurrentEditing].Width+15),(float)m_editNumberRect[m_idxCurrentEditing].Height); //+15
is font displacemente correction (well done is to get metrics).
g->ScaleTransform(-1,-1);
g->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,0,0,m_stringFormat);
e->Graphics->DrawImage(bmp,m_editNumberRect[m_idxCurrentEditing]);

/*
e->Graphics->ScaleTransform(-1,-1);
e->Graphics->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,0,0,m_stringFormat);
e->Graphics->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,m_editNumberRect[m_idxCurrentEditing],m_stringFormat);
*/
Respuesta Responder a este mensaje
#2 RFOG
20/12/2006 - 22:25 | Informe spam
RFOG expressed precisely :
RFOG explained on 20/12/2006 :
Hola

A ver si alguien lo sabe, yo no lo encuentro por ningún lado.

Tengo que pintar un texto de abajo hacia arriba en vertical. En principio
no es problema, porque asigno DirectionRightToLeft y DirectionVertical en
el formato de la cadena y ya está, pero el problema es que lo hace de
arriba hacia abajo y justo a revés. Vamos, que debería darle la vuelta
180º.

Con SetTransformation lo puedo hacer, y también pintando sobre un bitmap y
luego copiándolo rotado 180º, pero no me creo que haya alguna forma de
hacerlo de forma normal, con alguna propiedad de DrawString...



Este código lo hace, gracias al Petzold y a un poco de acordarme de la madre
de alguien (directamente sobre la ficha -lo comentado-, no funciona, ¿Cómo le
habrá funcionado a Pezold? Misterios sin resolver):

Bitmap ^bmp=gcnew
Bitmap(m_editNumberRect[m_idxCurrentEditing].Width,m_editNumberRect[m_idxCurrentEditing].Height,e->Graphics);
Graphics ^g=Graphics::FromImage(bmp);
g->TranslateTransform((float)(m_editNumberRect[m_idxCurrentEditing].Width+15),(float)m_editNumberRect[m_idxCurrentEditing].Height); //+15
is font displacemente correction (well done is to get metrics).
g->ScaleTransform(-1,-1);
g->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,0,0,m_stringFormat);
e->Graphics->DrawImage(bmp,m_editNumberRect[m_idxCurrentEditing]);

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



Se me ha colado una línea: lo del comentario debe ser:

e->Graphics->ScaleTransform(-1,-1);
e->Graphics->TranslateTransform((float)(m_editNumberRect[m_idxCurrentEditing].Width+15),(float)m_editNumberRect[m_idxCurrentEditing].Height); e->Graphics->DrawString(m_editNumber[m_idxCurrentEditing],m_textFont,Brushes::Black,m_editNumberRect[m_idxCurrentEditing],m_stringFormat);
Respuesta Responder a este mensaje
#3 Alberto Poblacion
20/12/2006 - 23:08 | Informe spam
"RFOG" wrote in message
news:
no me creo que haya alguna forma de hacerlo de forma normal, con alguna
propiedad de DrawString...



e.Graphics.TranslateTransform(0, altura);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString(texto, fuente, brocha, 0, 0);
Respuesta Responder a este mensaje
#4 RFOG
21/12/2006 - 11:01 | Informe spam
Alberto Poblacion brought next idea :
"RFOG" wrote in message
news:
no me creo que haya alguna forma de hacerlo de forma normal, con alguna
propiedad de DrawString...



e.Graphics.TranslateTransform(0, altura);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString(texto, fuente, brocha, 0, 0);



No pinta nada en ningún lugar de la ficha. Imagino que se nos escapa
algo...
Respuesta Responder a este mensaje
#5 Alberto Poblacion
21/12/2006 - 12:37 | Informe spam
"RFOG" wrote in message
news:
e.Graphics.TranslateTransform(0, altura);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString(texto, fuente, brocha, 0, 0);



No pinta nada en ningún lugar de la ficha. Imagino que se nos escapa
algo...



Acabo de probarlo. He puesto estos dos eventos en un formulario en blanco, y
pintan correctamente el texto en vertical junto al borde izquierdo:

private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.TranslateTransform(0, this.ClientSize.Height);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString("Hola, Mundo", this.Font, Brushes.Black,
0, 0);
}

private void Form1_Resize(object sender, EventArgs e)
{
this.Invalidate();
}
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida