2011-11-01 36 views
8

Estoy usando el método de cordón de la clase Graphics para dibujar una cadena en la imagen.Dibujar un texto girado en una imagen en C#

g.DrawString(mytext, font, brush, 0, 0); 

estoy tratando de girar el texto por el ángulo con el Rotar función de transformación del objeto gráfico para que el texto se puede dibujar en cualquier angle.How puedo hacerlo usando Rotar Transformar. La rotación Transformar Código i utilizado es

Bitmap m = new Bitmap(pictureBox1.Image); 
    Graphics x=Graphics.FromImage(m); 
    x.RotateTransform(30); 
    SolidBrush brush = new SolidBrush(Color.Red); 
    x.DrawString("hi", font,brush,image.Width/2,image.Height/2); 
//image=picturebox1.image 
    pictureBox1.Image = m; 

El texto se dibuja en un ángulo girado pero no se dibuja en el centro como yo me want.Plz ayudar.

+1

Muéstranos la rotación transformamos código que ha intentado. – mbeckish

+0

¿Puede mostrarnos el método completo (por ejemplo, este es el evento OnPaint)? Además, ¿puede decirnos qué resultados obtiene? – mbeckish

Respuesta

22

No es suficiente con sólo RotateTransform o TranslateTranform si desea centrar el texto. Es necesario para compensar el punto de partida del texto, también, midiéndolo:

Bitmap bmp = new Bitmap(pictureBox1.Image); 
using (Graphics g = Graphics.FromImage(bmp)) { 
    g.TranslateTransform(bmp.Width/2, bmp.Height/2); 
    g.RotateTransform(30); 
    SizeF textSize = g.MeasureString("hi", font); 
    g.DrawString("hi", font, Brushes.Red, -(textSize.Width/2), -(textSize.Height/2)); 
} 

De How to rotate Text in GDI+?

+0

@ LarsTech.Trabaja como un amuleto.Puede ayudarme a hacer esto en el caso de una imagen.He agregado el Código. Consulte. – techno

2

antes g.DrawString(mytext, font, brush, 0, 0); uso g.RotateTransform(45);

+0

Ya he usado este enfoque.Plz ver la edición. – techno

Cuestiones relacionadas