Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wpf 4.0:图形别名格式化文本/字形运行?_C#_Wpf_Text_Drawing - Fatal编程技术网

C# Wpf 4.0:图形别名格式化文本/字形运行?

C# Wpf 4.0:图形别名格式化文本/字形运行?,c#,wpf,text,drawing,C#,Wpf,Text,Drawing,在Wpf 4.0中,您可以关闭Frameworkelement及其所有子元素的文本抗锯齿功能,方法是将其置于主窗口中: TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display); TextOptions.SetTextRenderingMode(this, TextRenderingMode.Aliased); 这适用于文本块等,但在使用DrawingContext的方法DrawText(FormattedText

在Wpf 4.0中,您可以关闭Frameworkelement及其所有子元素的文本抗锯齿功能,方法是将其置于主窗口中:

TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display);
TextOptions.SetTextRenderingMode(this, TextRenderingMode.Aliased); 
这适用于文本块等,但在使用DrawingContext的方法DrawText(FormattedText)或DrawGlyphRun(..)时似乎没有任何效果


是否有可能通过DrawingContext绘制别名文本?(我知道FormattedText.BuildGeometry()技巧,但使用小文本时这看起来很糟糕)

我现在没有WPF4,所以无法测试它。但通过MSDN的快速扫描显示您可以使用。在此处设置渲染模式,然后使用
RenderOpen
获取DrawingContext


问题是您希望在何处以及如何绘制此文本。

有一个用于
FormattedText
的重载构造函数,它允许指定
TextFormattingMode

如何删除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();

是的,您可以将TextOptions.SetTextFormattingMode设置为DrawingVisual。使用FormattedText时,您可以获得非常清晰的结果!不幸的是,这种方式似乎无法使GlyphRunDrawing具有别名。我更喜欢Glyphrun,因为它比FormattedText快得多,而且我在Frameworkelement的重写OnRender()方法中有很多元素要绘制。
TextFormattingMode
无助于绘制别名文本。