Использование TextOptions.TextFormattingMode с FormattedText - PullRequest
12 голосов
/ 31 марта 2010

С WPF4 вы можете получить не размытый текст, добавив TextOptions.TextFormattingMode = "Display" и TextOptions.TextRenderingMode = "Aliased" в xaml:

<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 = "Display" и TextOptions.TextRenderingMode = "Aliased".

Ответы [ 2 ]

13 голосов
/ 13 июля 2011

Для FormattedText имеется перегруженный конструктор, который позволяет указывать 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));
}
0 голосов
/ 21 мая 2010

Следуйте приведенному здесь примеру для Расширенное форматирование текста , создайте объект TextFormatter и используйте TextLine.Draw ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...