【发布时间】: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 像素高度分隔符是像素完美的。有什么办法可以解决这个问题?
【问题讨论】:
-
这只是猜测,但可能与WPF的抗锯齿有关。看到这个问题:stackoverflow.com/questions/1738956/…。或者这个:stackoverflow.com/questions/5585082/….
-
您是否尝试将
SnapsToDevicePixels设置为 true ?编辑:@BrianSnow 比我快! -
已尝试:像素数正确,但颜色仍不正常。