在高缩放级别的圆形边框周围的白线

时间:2009-11-05 01:28:44

标签: .net wpf xaml graphics border

如果我在xamlpadx(500%)中放大得足够大,我会看到边框内侧的线条。在我的应用程序中,这甚至发生在某些控件的正常缩放级别。

为什么这样,更重要的是,我能做些什么呢?

这是我的XAML代码:

<Border Background="#000000" BorderBrush="#000000" BorderThickness="4" CornerRadius="4">    
   <StackPanel>               
   </StackPanel>
</Border>

我删除了所有内容,直到我确定有缺陷的显示中没有填充/边距/边框。

编辑2: 我不应该这么快就接受答案。我注意到在相同的情况下,错误与以前一样,尽管我使用了SnapsToDevicePixels并将控件的内部颜色设置为与边框相同的颜色。我希望微软能尽快解决这个问题!

3 个答案:

答案 0 :(得分:5)

我有相同的行为,我认为这是WPF渲染引擎的错误。 通过向边框添加SnapsToDevicePixels="True"可以获得更好的效果:白线仅保留在圆角中。

答案 1 :(得分:1)

这确实是WPF中的一个错误。但是,根据您的具体情况,您可以使用两种解决方法:

<Border Background="#000000" BorderThickness="0" CornerRadius="4">
   <StackPanel Margin="4">               
   </StackPanel>
</Border>

或者

<Border Background="#000000" BorderThickness="0" CornerRadius="4">
   <Border Background="#000000" BorderThickness="0" CornerRadius="4" Margin="4">
       <StackPanel>               
       </StackPanel>
    </Border>
</Border>

答案 2 :(得分:1)

此行为是WPF工作方式所固有的。这不是一个错误。请注意,您的坐标都是双精度数,而不是整数:这些不是精确单位。如果你放大得足够,你会看到错误。

以下是大约一年前的记忆,但我认为是对的:

如果您手动绘制wpf渲染上下文,可以使用“指南”系统来排列。这是为库存UI样式绘制按钮和事物的方式。看一下参考源(http://blogs.msdn.com/rscc/default.aspx),你可以亲自看看。关于这个主题,一般还有一个很好的msdn页面:http://msdn.microsoft.com/en-us/library/aa970908.aspx