在Wpf 4.0中,你可以通过放置例如它来关闭Frameworkelement及其所有子节点的Text antialiasing。在主窗口中:
TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display);
TextOptions.SetTextRenderingMode(this, TextRenderingMode.Aliased);
这适用于TextBlocks等,但在使用DrawingContext的方法DrawText(FormattedText)或DrawGlyphRun(..)时似乎没有任何效果。
是否有可能通过DrawingContext 绘制别名文本? (我知道FormattedText.BuildGeometry()技巧,但在使用小文本时看起来很糟糕)
答案 0 :(得分:1)
我现在没有WPF4,所以我无法测试它。但是通过MSDN快速扫描显示您可以使用DrawingVisual。在此处设置RenderingMode,然后使用RenderOpen
获取DrawingContext。
问题是您要在何处以及如何绘制此文本。
答案 1 :(得分:1)
如何删除glyphrun模糊效果:
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();
答案 2 :(得分:0)
FormattedText
有一个重载的构造函数,允许指定TextFormattingMode
:http://msdn.microsoft.com/en-us/library/ee474866.aspx