【问题标题】:Image not displayed pixel to pixel图像未逐像素显示
【发布时间】:2012-11-08 14:17:38
【问题描述】:

我很困惑。

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

【问题讨论】:

标签: c# wpf image xaml


【解决方案1】:

感谢@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-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多