2011-11-01 13 views
8

Sto usando il metodo drawstring della classe Graphics per disegnare una stringa sull'immagine.Disegno di un testo ruotato su un'immagine in C#

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

sto cercando di ruotare il testo dal punto di vista utilizzando la Ruota Transform funzione dell'oggetto grafico in modo che il testo può essere disegnato in qualsiasi angle.How posso farlo utilizzando Ruota Transform. La rotazione Transform codice che ho usato è

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; 

Il testo è disegnato ad un angolo ruotato ma non è disegnata al centro come i me want.Plz dare una mano.

+1

Mostraci la rotazione trasformare il codice che si è tentato. – mbeckish

+0

Puoi mostrarci l'intero metodo (ad esempio, è questo l'evento OnPaint)? Inoltre, puoi dirci quali risultati stai ottenendo? – mbeckish

risposta

22

Non è sufficiente a poco RotateTransform o TranslateTranform se si vuole centrare il testo. È necessario per compensare il punto di partenza del testo, anche misurandolo:

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)); 
} 

Da How to rotate Text in GDI+?

+0

@ LarsTech. Funziona come un incantesimo. Puoi aiutarmi a farlo nel caso di un'immagine. Ho aggiunto il codice Si prega di vedere. – techno

2

prima dell'uso g.DrawString(mytext, font, brush, 0, 0);g.RotateTransform(45);

+0

Ho già utilizzato questo approccio.Plz vedere la modifica. – techno