当前位置: 代码迷 >> C# >> WPF,宽度替1的Border
  详细解决方案

WPF,宽度替1的Border

热度:450   发布时间:2016-05-05 05:25:40.0
WPF,宽度为1的Border
在WPF中,宽度为1的Border,如果SnapsToDevicePixels为true的话,就很清晰,但是,如果改变窗口尺寸,则Border有可能消失;如果SnapsToDevicePixels为false的话,则无论怎么拉动窗口,Border都不会消失,但是Border有可能变得很模糊,很粗。

试问天下高人,处理此种情况,除了SnapsToDevicePixels属性,就没有其它办法了吗?
------解决思路----------------------
定义 width为1 的Line,border为容器控件,不适合干这事。
------解决思路----------------------
引用:
定义 width为1 的Line,border为容器控件,不适合干这事。

+1
------解决思路----------------------
引用:
Quote: 引用:

定义 width为1 的Line,border为容器控件,不适合干这事。

我试了一下,使用Line也会出现这种现象啊:
如果SnapsToDevicePixels为true的话,就很清晰,但是,如果改变窗口尺寸,则Line有可能消失;如果SnapsToDevicePixels为false的话,则无论怎么拉动窗口,Line都不会消失,但是Line有可能变得很模糊,很粗


这就涉及到了WPF中的“像素对齐”概念了,SnapsToDevicePixels为true 启用像素对齐,也就是将UI中可视化树中的对象边缘与设备像素对齐,如果为false,就会产生“模糊”的效果。

当窗口大小改变,像素对齐 功能就会关闭,直到动作结束,再重新计算对象边缘与设备像素是否对齐。想象一下,一个width为100的line 如果恰当的显示清晰,改变了它的父容器大小,结果它的大小随之而变,就会引起像素对象失效,就会造成模糊,出现锯齿边缘等现象。 办法可能 就是设置父容器的最小宽度,防止元素大小改变。
------解决思路----------------------
引用:
有没有好的办法呢

你如果知道了 记得分享出来。
  相关解决方案