谁能建议何时SnapsToDevicePixels
在 WPF 4.0 中使用的指南?
是否应该仅在出现问题时才偶尔使用,在整个应用程序中自由使用,仅在某些控件上使用还是什么?
谁能建议何时SnapsToDevicePixels
在 WPF 4.0 中使用的指南?
是否应该仅在出现问题时才偶尔使用,在整个应用程序中自由使用,仅在某些控件上使用还是什么?
Spencer 和 Martin 关于何时对齐像素的好答案。
至于如何:我还要指出,应该在 WPF 4.0 中尝试使用该属性UseLayoutRounding
而不是SnapsToDevicePixels
.
UseLayoutRounding
使您正在做的事情与 Silverlight 兼容(SnapsToDevicePixels
在 Silverlight 中不可用)......微软也鼓励在其文档UseLayoutRounding
中使用over 。SnapsToDevicePixels
两者有什么区别?嗯,一个很大的区别是UseLayoutRounding
发生在布局阶段,而SnapsToDevicePixels
发生在渲染阶段。这让我推测这UseLayoutRounding
可能是一种更高效的方式(不过我还没有证实这一点)。
尽管如此,仍然有理由使用SnapsToDevicePixels
. 事实上,MSDN 文档指向一个。我要补充一点:只有SnapsToDevicePixels
这样,您才能使用指南进行精确控制。
以下是有关此问题的一些资源(即图像、文本和视觉效果的像素捕捉和清晰度):
呵呵。我知道我的回答比你所要求的要多一点......但是这个概念(即分辨率独立性和它带来的由此产生的问题以及如何克服它们)在使用 WPF 时通常会让人感到沮丧。至少,我想向您指出新的 WPF 4.0 属性,UseLayoutRounding
.
更新
我只需要添加,因为我一遍又一遍地看到这个......有时SnapsToDevicePixels
在UseLayoutRounding
没有的情况下工作。我希望我能弄清楚为什么会这样,但一定要先尝试 UseLayoutRounding,如果这不起作用,请不要犹豫尝试SnapsToDevicePixels
。
那条线太锋利了,可以割伤你!
它应该用于像素位置有意义的控件或区域。与绘图应用程序的画布相关的控件就是一个示例。你见过碎片驱动器的地图吗?这可能是另一个例子。
我能想到的一个例外是当您使用某种分隔线时。大多数人希望边界线是实心的。如果关闭此设置,它们可能看起来模糊且分散注意力。
基本上,如果边缘模糊=不好,则将其打开
一种情况是您正在显示图像或视频。如果您不捕捉设备像素(即视频屏幕的像素),则使用一些算法(插值、抗锯齿)将图像的像素定位在屏幕像素“之间”,并且显示的内容不会看起来和原始图像一样好。图像会失去一些清晰度。
刚刚注意到它对边框非常有用。附加信息在这里。
<Style TargetType="Border" >
<Setter Property="SnapsToDevicePixels" Value="True" />
</Style>