【发布时间】:2017-05-10 07:35:22
【问题描述】:
我使用 WPF 将文本渲染到位图。我想关闭抗锯齿,我的意思是我希望像素是白色或黑色。但是文字仍然是模糊的,有些像素甚至是灰色的。
这是我的代码。有些行可能不需要。
RenderTargetBitmap bm = new RenderTargetBitmap(bitmapWidth, bitmapHeight, dpiX, dpiY, PixelFormats.Pbgra32);
DrawingVisual drawing_visual = new DrawingVisual();
RenderOptions.SetEdgeMode(drawing_visual, EdgeMode.Unspecified);
RenderOptions.SetBitmapScalingMode(drawing_visual, BitmapScalingMode.Linear);
RenderOptions.SetEdgeMode(bm, EdgeMode.Unspecified);
RenderOptions.SetBitmapScalingMode(bm, BitmapScalingMode.Linear);
DrawingContext drawing_context = drawing_visual.RenderOpen();
FormattedText ft = new FormattedText("my text", CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, typeface, fontSize, Brushes.Black);
drawing_context.DrawText(ft, new Point(0, 0));
drawing_context.Close();
bm.Render(drawing_visual);
渲染图像:
要查看解决方案,您可以从 GitHub 下载源代码:
https://github.com/qub1n/Font-rendering.git
【问题讨论】:
-
文本值得使用 WPF 进行特殊处理。也许您应该尝试 TextOptions.TextFormattingMode 和/或 TextRenderingMode:blogs.msdn.microsoft.com/text/2009/08/24/…
-
TextFormattingMode 没有解决它并且 TextRenderingMode 不包含没有抗锯齿的设置。
-
您对屏幕可视化或位图(.png 等文件)创建感兴趣吗?它们完全不同。
-
尤其是位图,我要导出。
-
如何将
EdgeMode设置为Aliased?
标签: wpf drawing antialiasing