2010-03-31 15 views
11

Z WPF4 można mieć tekst non-rozmyte przez dodanie TextOptions.TextFormattingMode = "display" i TextOptions.TextRenderingMode = "aliasem" do XAML:Korzystanie TextOptions.TextFormattingMode z FormattedText

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

Działa to dobrze dla mi z wyjątkiem gdy rysuję tekst z DrawingContext.DrawText tak:

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

Jak mogę narysować non-rozmazany tekst FormattedText? tj. chcę TextOptions.TextFormattingMode = "Display" i TextOptions.TextRenderingMode = "Aliased" do użycia.

Odpowiedz

12

Jest przeciążony Konstruktor FormattedText pozwalające na podanie TextFormattingMode: http://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

Ta odpowiedź jest prawo, dlaczego ktoś go odrzucił? – asktomsk

+0

+1. Zgadzam się, ta odpowiedź jest zdecydowanie słuszna i nie widzę powodu, dla którego mogłabym złożyć wniosek. Nie określa jednak, jak ustawić 'TextRenderingMode' chociaż –