谁能建议在WPF 4.0中何时使用SnapsToDevicePixels
的准则?
是否仅在出现问题的情况下才偶尔使用它(在整个App中),仅在某些控件上或什么情况下使用?
最佳答案
当对齐像素时,Spencer和Martin对于给出了很好的答案。
关于,如何使用:我还要指出,在WPF 4.0中,应该尝试使用属性UseLayoutRounding
而不是SnapsToDevicePixels
。UseLayoutRounding
使您正在做的事情与Silverlight兼容(Silverlight中不提供SnapsToDevicePixels
)...并且Microsoft也在鼓励在其documentation中使用UseLayoutRounding
而不是SnapsToDevicePixels
。
两者有什么区别?好吧,一个很大的不同是UseLayoutRounding
在布局阶段发生,而SnapsToDevicePixels
在渲染阶段发生。这使我推测UseLayoutRounding
可能是一种更高性能的方式(不过我还没有证实这一点)。
综上所述,仍然有理由使用SnapsToDevicePixels
。实际上,MSDN文档指向其中之一。我还要补充一点:只有SnapsToDevicePixels
才可以使用准则进行精确控制。
以下是有关此问题的一些资源(即像素捕捉和图像,文本和视觉效果的清晰度):
嘿。我知道我的回答远远超过您的要求...但是在使用WPF时,这个概念(即分辨率独立性及其带来的问题以及如何克服这些问题)通常是frustration的重点。至少,我想将您指向新的WPF 4.0属性UseLayoutRounding
。
更新
我只需要添加,因为我已经一遍又一遍地看到了这一点...有时候SnapsToDevicePixels
在UseLayoutRounding
不起作用时起作用。我希望我能指望为什么会这样,但是绝对可以先尝试UseLayoutRounding,如果那行不通,请立即尝试SnapsToDevicePixels
。
那条线太锋利,可以割伤你!