我很困惑。
我创建了一个PNG图像,它在我的应用程序显示中是一个分隔符,图像像这样高3像素:
然而,当我在C#WPF窗口上显示并运行它时,分隔符显示为大约4个像素,颜色关闭。
<StackPanel Height="3">
<StackPanel.Background>
<ImageBrush ImageSource="Assets/divider.png" Stretch="None"
AlignmentX="Left" AlignmentY="Top" Viewport="0,0,20,3"
ViewportUnits="Absolute" TileMode="FlipX" />
</StackPanel.Background>
</StackPanel>
我认为图像是“拉伸”的(尽管Stretch="None"
)或者有一些优化图像的机制,所以我取消了图像并用3个矩形写了相同颜色和1像素高度各自像这样:
<StackPanel Height="3" Orientation="Vertical">
<Rectangle Fill="#484848" Height="1" />
<Rectangle Fill="#222" Height="1" />
<Rectangle Fill="#484848" Height="1" />
</StackPanel>
然而结果是相似的:4个像素和颜色流失(不是指定的确切颜色):
除了像素关闭外,颜色也会关闭。我的颜色应该是#484848
,#222222
,#484848
。当在WPF窗口上显示时,阴影会稍微偏离(太多灰色阴影!)
我需要分隔符来填充窗口,因为窗口调整大小。我是一个完美主义者,我希望3像素高度分离器像素完美。解决这个问题的任何解决方案?
答案 0 :(得分:0)
感谢@Brian和@Sisyphe,我能够正确显示这些行。然而,这仍然是通过Rectangle
显示器完成的解决方案,我认为有更好的解决方案。
这是我目前的解决方案:
<StackPanel HorizontalAlignment="Stretch" Height="3">
<Rectangle Fill="#484848" Height="1" RenderOptions.EdgeMode="Aliased" />
<Rectangle Fill="#222222" Height="1" RenderOptions.EdgeMode="Aliased" />
<Rectangle Fill="#484848" Height="1" RenderOptions.EdgeMode="Aliased" />
</StackPanel>