2012-01-11 5 views
6

kullanarak WPF'de dikey metni çizim WPF'de DrawingContext kullanarak bazı özel çizim yapıyorum. Dizeleri çizmek için DrawingContext.DrawText kullanıyorum. Şimdi, bir yerde metni dikey olarak çizmek istiyorum. Metni dikey olarak çizmek için DrawingContext OR DrawText() işlevinde herhangi bir seçenek var mı?DrawingPontext.DrawText()

cevap

10

DrawingContext sınıfının PushTransform ve Pop yöntemlerini kullanmanız gerekir.

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

Üzgünüm, bu anlamaya çalışıyorum onbeş dakika boyunca kafamı duvara vurarak çünkü bu mesaja vardı. Kimsenin bundan geçmesini istemiyorum. Bu döndürme metin kökenli etrafında dönüşümü oluşturmak için gereken, bu nedenle bu cevabı oldukça eski Taşıyamazsınız biz RotateTransform'un yapıcı

 ... 
     // 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(); 
     ... 
+1

için x ve y geçmesi O transforme eklemek istiyorum: Burada – user2261015

-1

benim çözümdür konum, yalnızca 90'lık bir açı ile çalışan Point() ctor'un değerlerini değiştirerek 'elle' değil, başka bir dönüşüm nesnesi tarafından yapılmalıdır. Metin konumu ile bir TranslateTransform nesnesi oluştururken ve döndürmeden önce iterken, kod herhangi bir açıyla çalışacaktır.
+2

Lütfen cevabınızı açıklamak için biraz metin eklemeyi düşünün. –