我正在使用WPF开发一个新的C#应用程序。我的印象是WPF是基于矢量的,文本/按钮将以独立于分辨率的方式绘制。当运行我的应用程序时,很明显我的应用程序不是使用矢量绘制的。有些文本变得相当块状,当使用windows放大镜时,你可以看到所有东西的粗糙边缘。是否需要在应用程序中执行某些特殊操作才能打开矢量绘图?或者是我的特定机器出现了问题?(我运行的是Windows Vista x64,带有最新的图形驱动程序)
cunj1qz11#
Windows Vista * 中的Mangiifier辅助工具 * 支持WPF。如果您缩放WPF内容,您会看到应用程序的清晰放大版本-这表明WPF确实是基于矢量的。微软blogged about this in 2006的技术倡导者Tim Sneath:x1c 0d1x的数据
**6/25/2011:**原始图像消失。替换为另一个显示相同效果的图像。
Greg Schechter answers some commenters on this blog解释说,放大镜不再有这个技巧。放大镜将专门检测WPF应用程序,并知道如何要求他们渲染自己的缩放。他们删除了一个依赖于WPF的放大镜。似乎放大镜有一个依赖于WPF的东西,他们想带走或deprate:“bp”和“Joseph Cooney”都注意到,使用内置操作系统放大镜放大WPF内容不再独立于内容的缩放分辨率。这一观察是正确的。由于一系列的变化,操作系统放大镜不再是“WPF感知”的,它可以像其他内容一样进行位图缩放。虽然我们确实失去了这个功能,但我们相信,如果没有了使放大镜能够以特定于WPF的方式工作的依赖关系,我们可以更灵活地为WPF客户提供未来的产品。请注意,以上只是关于进程外放大。当您在自己的WPF应用程序中进行缩放(通过缩放)时,渲染将继续以更高的比例重新栅格化,因此在最常见的情况下,一切都保持平滑。此更改严格地与使用外部放大镜有关。所以放大镜以前有,但现在没有了。在第9频道的视频“Greg Schechter: Windows Presentation Foundation(WPF) Architecture“中,Greg Schechter谈到了放大镜过去是如何提供这一功能的。放大镜和DWM一起工作。放大镜修改了DWM场景图,使其客户端区域实际上指向场景图的桌面根。然后DWM知道放大镜在那里,并知道如何避免可怕的“将摄像机指向显示摄像机的电视机”效果。
编辑:2018年9月7日.来自Ian Griffiths' answer:
当Vista第一次发布时,当WPF在3.0版上时,使用内置放大镜缩放实际上会进行基于矢量的缩放。在WPF 3.5 Service Pack 1发布后,此功能停止工作。(在sp1之前,它在3.5中工作。)在此之前,它工作的原因是DWM(桌面窗口管理器)-Windows中负责显示屏幕上所见内容的部分-使用MILCORE.DLL进行渲染。WPF的3.0和3.5版也使用相同的组件进行渲染-可以说,这意味着所有WPF内容都是本机内容。(事实上,在没有DWM的Windows XP上,MILCORE.DLL是WPF出于自身利益而放在您的系统上的。但它内置在Vista和Windows 7中。)当WPF在Vista上使用MILCORE.DLL进行渲染时,DWM应用的任何效果,如缩放,也将以您希望的方式应用于WPF -它确实在不进行像素化的情况下进行缩放。不幸的是,现在的情况已经不是这样了。原因是WPF开始添加新的渲染特性。在3.5 sp1中,新的特性是对自定义像素着色器的支持。为了实现这一点,微软不得不发布了一个对MIL的更新。(媒体集成层-执行实际渲染的位。)然而,他们并没有真正更新MILCORE.DLL,因为这是Windows的一部分--它是您在屏幕上看到的所有内容都显示在屏幕上的方式。发布新版本的MILCORE.DLL实际上意味着推出对Windows的更新。Windows的发布时间表独立于.NET的发布时间表,因此WPF团队能够合理地添加新特性的唯一方法就是发布一个新的MIL。(理论上,他们可以通过Windows Update来完成,但由于WPF现在属于微软的一个部门,而不是Windows,这种事情似乎在实践中不会发生。)从.NET 3.5 sp1开始,MIL位于一个名为wpf_gfx_vXXXX.dll的不同DLL中,其中vXXXX是版本号。在.NET 4.0中,它是wpf_gfx_v0400.dll。好处是,WPF可以在每个新版本中添加新的渲染功能,而不需要更新Windows本身。坏处是,WPF的渲染功能不再像Vista发布时那样与Windows紧密集成。结果是,正如你所看到的,放大不再像以前那样有趣。
0pizxfdo2#
Vista中的放大镜并不特别聪明,它只是放大屏幕上已经光栅化的图像。要查看文本框实际上是基于矢量的,请尝试adjusting your DPI settings。
**编辑:**从评论,它似乎像放大镜在Vista中应该做矢量缩放毕竟.它肯定不会在这台计算机(Vista 32位),所以我可能有同样的问题. DPI缩放工程,虽然.
2条答案
按热度按时间cunj1qz11#
Windows Vista * 中的Mangiifier辅助工具 * 支持WPF。如果您缩放WPF内容,您会看到应用程序的清晰放大版本-这表明WPF确实是基于矢量的。
微软blogged about this in 2006的技术倡导者Tim Sneath:
x1c 0d1x的数据
**6/25/2011:**原始图像消失。替换为另一个显示相同效果的图像。
Greg Schechter answers some commenters on this blog解释说,放大镜不再有这个技巧。放大镜将专门检测WPF应用程序,并知道如何要求他们渲染自己的缩放。他们删除了一个依赖于WPF的放大镜。似乎放大镜有一个依赖于WPF的东西,他们想带走或deprate:
“bp”和“Joseph Cooney”都注意到,使用内置操作系统放大镜放大WPF内容不再独立于内容的缩放分辨率。
这一观察是正确的。
由于一系列的变化,操作系统放大镜不再是“WPF感知”的,它可以像其他内容一样进行位图缩放。虽然我们确实失去了这个功能,但我们相信,如果没有了使放大镜能够以特定于WPF的方式工作的依赖关系,我们可以更灵活地为WPF客户提供未来的产品。
请注意,以上只是关于进程外放大。当您在自己的WPF应用程序中进行缩放(通过缩放)时,渲染将继续以更高的比例重新栅格化,因此在最常见的情况下,一切都保持平滑。此更改严格地与使用外部放大镜有关。
所以放大镜以前有,但现在没有了。
在第9频道的视频“Greg Schechter: Windows Presentation Foundation(WPF) Architecture“中,Greg Schechter谈到了放大镜过去是如何提供这一功能的。
放大镜和DWM一起工作。放大镜修改了DWM场景图,使其客户端区域实际上指向场景图的桌面根。然后DWM知道放大镜在那里,并知道如何避免可怕的“将摄像机指向显示摄像机的电视机”效果。
编辑:2018年9月7日.来自Ian Griffiths' answer:
当Vista第一次发布时,当WPF在3.0版上时,使用内置放大镜缩放实际上会进行基于矢量的缩放。
在WPF 3.5 Service Pack 1发布后,此功能停止工作。(在sp1之前,它在3.5中工作。)在此之前,它工作的原因是DWM(桌面窗口管理器)-Windows中负责显示屏幕上所见内容的部分-使用MILCORE.DLL进行渲染。WPF的3.0和3.5版也使用相同的组件进行渲染-可以说,这意味着所有WPF内容都是本机内容。(事实上,在没有DWM的Windows XP上,MILCORE.DLL是WPF出于自身利益而放在您的系统上的。但它内置在Vista和Windows 7中。)当WPF在Vista上使用MILCORE.DLL进行渲染时,DWM应用的任何效果,如缩放,也将以您希望的方式应用于WPF -它确实在不进行像素化的情况下进行缩放。
不幸的是,现在的情况已经不是这样了。原因是WPF开始添加新的渲染特性。在3.5 sp1中,新的特性是对自定义像素着色器的支持。为了实现这一点,微软不得不发布了一个对MIL的更新。(媒体集成层-执行实际渲染的位。)然而,他们并没有真正更新MILCORE.DLL,因为这是Windows的一部分--它是您在屏幕上看到的所有内容都显示在屏幕上的方式。发布新版本的MILCORE.DLL实际上意味着推出对Windows的更新。Windows的发布时间表独立于.NET的发布时间表,因此WPF团队能够合理地添加新特性的唯一方法就是发布一个新的MIL。(理论上,他们可以通过Windows Update来完成,但由于WPF现在属于微软的一个部门,而不是Windows,这种事情似乎在实践中不会发生。)
从.NET 3.5 sp1开始,MIL位于一个名为wpf_gfx_vXXXX.dll的不同DLL中,其中vXXXX是版本号。在.NET 4.0中,它是wpf_gfx_v0400.dll。
好处是,WPF可以在每个新版本中添加新的渲染功能,而不需要更新Windows本身。坏处是,WPF的渲染功能不再像Vista发布时那样与Windows紧密集成。结果是,正如你所看到的,放大不再像以前那样有趣。
0pizxfdo2#
Vista中的放大镜并不特别聪明,它只是放大屏幕上已经光栅化的图像。要查看文本框实际上是基于矢量的,请尝试adjusting your DPI settings。
**编辑:**从评论,它似乎像放大镜在Vista中应该做矢量缩放毕竟.它肯定不会在这台计算机(Vista 32位),所以我可能有同样的问题. DPI缩放工程,虽然.