2012-01-11 20 views

Odpowiedz

10

Będziesz musiał używać PushTransform i Pop metod klasy DrawingContext.

DrawingContext dc; // Initialize this correct value 
RotateTransform RT = new RotateTransform(); 
RT.Angle = 90 
dc.PushTransform(RT) 
dc.DrawText(...); 
dc.Pop(); 
3
DrawingContext dc; 
Point textLocation 
var RT = new RotationTransform(-90.0); 

// You should transform the location likewise... 
location = new Point(-location.Y, location.X); 

dc.PushTransform(RT); 
dc.DrawText(formattedText, location); 

Niestety, musiałem pisać o tym, bo walił głową o ścianę przez piętnaście minut próbuje dowiedzieć się tego. Nie chcę, żeby ktokolwiek inny przez to przechodził.

+1

Mimo, ta odpowiedź jest dość stary Chciałbym dodać, że przekształcanie lokalizacja powinna być wykonana przez inny obiekt transformacji zamiast "ręcznie" wymieniać wartości ctor Point(), który działa tylko pod kątem 90. Podczas tworzenia obiektu TranslateTransform z lokalizacją tekstu i przesuwania go przed obrotem, kod będzie działał pod dowolnym kątem. – user2261015

-1

Oto moje rozwiązanie: To trzeba utworzyć obracanie przekształcać wokół pochodzenia tekstu, więc mijamy xiy do RotateTransform konstruktora

 ... 
     // ft - formatted text, (x, y) - point, where to draw    
     dc.PushTransform(new RotateTransform(-90, x, y)); 
     dc.DrawText(ft, new Point(x, y)); 
     dc.Pop(); 
     ... 
+2

Proszę rozważyć dodanie tekstu do wyjaśnienia swojej odpowiedzi. –

Powiązane problemy