gpt4 book ai didi

带有两个边框的 WPF DPI 渲染问题

转载 作者:行者123 更新时间:2023-12-05 00:20:32 24 4
gpt4 key购买 nike

环境

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>

问题

当 DPI 为 96 时,边框看起来不错,但如果我将 DPI 更改为 120,则边框不再完全像素对齐。

我试过的

1) 设置以下属性 - RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True" UseLayoutRounding="True" - 在两个边框上,减轻了较高 DPI 引起的抗锯齿和出血问题,但内边框似乎通常在右侧和底部有 1px 的边距。

2) 以下代码无助于解决该问题:
<Grid Width="20" Height="20">
<Border BorderThickness="1" BorderBrush="Red" />
<Border BorderThickness="1" BorderBrush="Blue" Margin="1" />
</Grid>

3) 使用 Rectangles 而不是 Borders 也有同样的问题。

4) 在 VirtualBox 中运行的 guest Win 7 下,该问题仍然存在。

5) 编辑 - 这看起来好一点,因为没有内部边距,但外部“边框”厚 2px:
<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 - https://connect.microsoft.com/VisualStudio/feedback/details/798513/wpf-dpi-rendering-issues-with-two-borders

再说一次,这个问题不会得到解决或修复。

关于带有两个边框的 WPF DPI 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com