具有两个边界的WPF DPI渲染问题
环境 Win 8,VS 2012、.NET 4、WPF、屏幕本机分辨率1920x1080@96DPI XAML具有两个边界的WPF DPI渲染问题,wpf,dpi,Wpf,Dpi,环境 Win 8,VS 2012、.NET 4、WPF、屏幕本机分辨率1920x1080@96DPI XAML <Border BorderThickness="1" BorderBrush="Red" Width="20" Height="20"> <Border BorderThickness="1" BorderBrush="Blue" /> </Border> 3) 使用矩形代替边框也有同样的问题 4) 在VirtualBox中运行guest
<Border BorderThickness="1" BorderBrush="Red" Width="20" Height="20">
<Border BorderThickness="1" BorderBrush="Blue" />
</Border>
3) 使用矩形代替边框也有同样的问题
4) 在VirtualBox中运行guest Win 7时,问题仍然存在
5) 编辑-这看起来好一点,因为没有内部边距,但外部“边框”的厚度为2倍:
<Canvas Width="20" Height="20">
<Polygon Points="0,0 20,0, 20,20, 0,20" StrokeThickness="1" Stroke="Red" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True" UseLayoutRounding="True" />
<Polygon Points="1,1 19,1, 19,19, 1,19" StrokeThickness="1" Stroke="Blue" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True" UseLayoutRounding="True" />
</Canvas>
问题
如何使边框达到像素级完美,无任何内边距或防褪色/出血
当DPI不是96时,我不能使用代码隐藏来修改边框大小。我必须只使用XAML,因为我正在尝试创建矢量图标(基于XAML)。Bravo Microsoft-
同样,这个问题将不会得到解决或修复。您是否尝试过使用画布多边形/路径和相对坐标来完成此任务?@VidasVasiliauskas-查看我在第5步中的编辑(我已经尝试过了)还有一个想法-windows 8缩放可能是一个问题,我知道您已经在来宾操作系统上尝试过这一点,但我想知道它是如何通过虚拟化和本机操作系统实现的。众所周知,win 8缩放会在某些缩放比例上导致像素加倍-听起来很可能是您出现问题的原因。@VidasVasiliauskas-在本机win 7机器上验证过,所有测试都会产生与以前完全相同的结果。我当时没有主意。。。希望您能解决此问题并分享解决方案!
<Canvas Width="20" Height="20">
<Polygon Points="0,0 20,0, 20,20, 0,20" StrokeThickness="1" Stroke="Red" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True" UseLayoutRounding="True" />
<Polygon Points="1,1 19,1, 19,19, 1,19" StrokeThickness="1" Stroke="Blue" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True" UseLayoutRounding="True" />
</Canvas>