2010-03-31 47 views
11

隨着WPF4您可以通過添加TextOptions.TextFormattingMode =「顯示」和TextOptions.TextRenderingMode =「別名」到你的XAML具有不模糊的文字:使用TextOptions.TextFormattingMode與FormattedText

<Window 
    TextOptions.TextFormattingMode="Display" 
    TextOptions.TextRenderingMode="Aliased"> 

這工作正常我除了當我用DrawingContext.DrawText繪製文本像這樣:

void DrawText(DrawingContext dc) 
{ 
    FormattedText ft = new FormattedText("Hello World", 
    System.Globalization.CultureInfo.CurrentCulture, 
    System.Windows.FlowDirection.LeftToRight, 
    new Typeface(FontFamily, FontStyle, FontWeight, FontStretch), 
    FontSize, 
    brush); 
    dc.DrawText(ft, new Point(rect.Left, rect.Top)); 
} 

如何使用FormattedText繪製非模糊文本?即我想TextOptions.TextFormattingMode =「顯示」和TextOptions.TextRenderingMode =「別名」使用。

回答

12

有用於FormattedText一個重載的構造函數,允許指定一個TextFormattingModehttp://msdn.microsoft.com/en-us/library/ee474866.aspx

void DrawText(DrawingContext dc) 
{ 
    FormattedText ft = new FormattedText("Hello World", 
    System.Globalization.CultureInfo.CurrentCulture, 
    System.Windows.FlowDirection.LeftToRight, 
    new Typeface(FontFamily, FontStyle, FontWeight, FontStretch), 
    FontSize, 
    brush, 
    null, 
    TextFormattingMode.Display); 
    dc.DrawText(ft, new Point(rect.Left, rect.Top)); 
} 
+3

這個答案是正確的,爲什麼有人投票呢? – asktomsk 2012-04-04 16:45:06

+0

+1。我同意,這個答案是絕對正確的,我看不出一個downvote的理由。它沒有指定如何設置'TextRenderingMode' – 2012-06-22 23:18:01