1

我很困惑。

我创建了一个 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 像素高度分隔符是像素完美的。有什么办法可以解决这个问题吗?

4

1 回答 1

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>
于 2012-11-08T14:33:57.417 回答