Wpf 4.0: рисование с псевдонимом FormattedText / GlyphRun? - PullRequest
1 голос
/ 04 ноября 2010

В Wpf 4.0 вы можете отключить сглаживание текста для элемента Frameworkelement и всех его дочерних элементов, поставив, например, это. в главном окне:

TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display);
TextOptions.SetTextRenderingMode(this, TextRenderingMode.Aliased); 

Это отлично работает для TextBlocks и т. Д., Но, похоже, не имеет никакого эффекта при использовании методов DrawingContext DrawText (FormattedText) или DrawGlyphRun (..).

Есть ли вероятность рисования текста с псевдонимом через DrawingContext ? (Я знаю об уловке FormattedText.BuildGeometry (), но это выглядит ужасно при использовании небольших размеров текста)

Ответы [ 3 ]

1 голос
/ 19 марта 2014

Как убрать эффект размытия глифруна:

var glyphRun = new GlyphRun(typeface, 0, false, emSize, glyphIndices, p, advanceWidths, null, null, null, null, null, null);
var rect = glyphRun.ComputeAlignmentBox();
Double halfPenWidth = 0.5;

GuidelineSet guidelines = new GuidelineSet();
guidelines.GuidelinesX.Add(rect.Left + halfPenWidth);
guidelines.GuidelinesX.Add(rect.Right + halfPenWidth);
guidelines.GuidelinesY.Add(rect.Top + halfPenWidth);
guidelines.GuidelinesY.Add(rect.Bottom + halfPenWidth);
drawingContext.PushGuidelineSet(guidelines);
drawingContext.DrawGlyphRun(brush, glyphRun);
drawingContext.Pop();
1 голос
/ 04 ноября 2010

У меня сейчас нет WPF4, поэтому я не могу его проверить.Но быстрое сканирование через MSDN показывает, что вы можете использовать DrawingVisual .Установите здесь свой RenderingMode и затем используйте RenderOpen для получения DrawingContext.

Вопрос в том, где и как вы хотите нарисовать этот текст.

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

Для FormattedText имеется перегруженный конструктор, который позволяет указывать TextFormattingMode: http://msdn.microsoft.com/en-us/library/ee474866.aspx

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