我正在编写一个小型的登录对话框,并在对话框顶部嵌入了一个横幅,以美观为出发点。一切都很顺利,但默认情况下,WPF会对整个图像进行抗锯齿处理,导致其中包含的文本非常模糊。
经过一番搜索,前几页的结果显示,普遍认为WPF无法禁用抗锯齿功能。是否有人可以确认或否认这个说法呢?
对我来说,这只是一个小问题——我将从图像中取出文本,然后在背景图像上叠加具有相同文本的标签,以达到相同的效果(虽然我必须承认,这有点令人恼火)。
谢谢, Rob
我正在编写一个小型的登录对话框,并在对话框顶部嵌入了一个横幅,以美观为出发点。一切都很顺利,但默认情况下,WPF会对整个图像进行抗锯齿处理,导致其中包含的文本非常模糊。
经过一番搜索,前几页的结果显示,普遍认为WPF无法禁用抗锯齿功能。是否有人可以确认或否认这个说法呢?
对我来说,这只是一个小问题——我将从图像中取出文本,然后在背景图像上叠加具有相同文本的标签,以达到相同的效果(虽然我必须承认,这有点令人恼火)。
谢谢, Rob
var DPI = Win32Functions.GetSystemMetrics(SM_CYICON) / SystemParameters.IconHeight * 96;
然后对于位图,执行:
var scale = bitmapDPI / DPI;
var transform = new ScaleTransform(scale, scale);
这将使得您的位图像素与设备像素完全匹配。WPF 不会拉伸位图,因此不应该出现反锯齿。
如果您想在高 DPI 屏幕上拉伸图像但又不希望出现反锯齿(例如将所有像素加倍),只需在自己的代码中使用任何算法来拉伸位图,并使用上述方法处理已经拉伸过的位图。
这不是真正的抗锯齿 - 是子像素定位导致的问题,我在我的博客上写了关于它的文章(以及解决该问题的控件):
http://www.nbdtech.com/blog/archive/2008/11/20/blurred-images-in-wpf.aspx