2014-04-01 70 views
4

我正在使用DrawText在Visual層上繪製FormattedText。現在我使用下面的代碼來定義格式化文本,我可以將TextAlignment設置爲Center。但是VerticalAlignment呢?正如您在下面的圖片中看到的那樣,文本的中心點不在中心點上,在這裏用紅點顯示。在DrawText中設置VerticalAlignment

在那裏我定義FormattedText的部分:

var ft = new FormattedText("A", 
    CultureInfo.GetCultureInfo("en-us"), 
    FlowDirection.LeftToRight, 
    new Typeface("Verdana"), 
    36, Brushes.Yellow); 

ft.TextAlignment = TextAlignment.Center; 

在那裏我繪製文本的部分:

var centerpoint = new Point(0,0); 
dc.DrawText(ft, centerpoint); 

下面是最終的結果:

enter image description here

我希望文本的中間位於圓的中心。

回答

5

好吧好像我能解決這個問題。這並不難。我會在這裏發佈答案供將來參考。它也可能幫助其他人。

因爲看起來沒有VerticalAlignment這樣的東西對於FormattedText所以我們需要自己計算和定位它。由於我們可以獲得格式化文本的Height屬性。我們可以很容易地對準這樣的文字:

dc.DrawText(ft, new Point(centerpoint.X, centerpoint.Y- ft.Height/2)); 

Here is the result