Wpf:使图像在原始尺寸下显示像素完美

问题描述 投票:0回答:1

我有一张 24x24 的图像。如果我不在 xaml 中输入宽度和高度并设置 Stretch="None",我的 24x24 的尺寸将达到 32x32。 “无拉伸”不应该意味着图像以 24x24 显示吗?

如果我强制将图像设置为 24x24,那么我会得到原始图像中不存在的额外像素。

我希望图像以 100% 大小/比例显示,并具有“像素完美”/“点过滤”渲染。

我在一个相关问题上读到,一些图像的 DPI 为 96,而另一些图像的 DPI 为 72,这可能会导致奇怪的行为。我尝试按照教程检查图像的 DPI,但教程所说的位置(红线处)没有 DPI 信息:

无论哪种方式,即使我修复图像 DPI 与我的屏幕 DPI 相同(也不知道如何检查),其他人的屏幕上不会有问题吗?我不希望图像在仅 96 DPI 的屏幕上呈现像素完美。我希望它始终保持像素完美,我始终希望图像的 1 个像素对应于应用程序/屏幕上的 1 个像素。

这在WPF中不可能实现吗?如果是的话,我怎样才能至少做到这一点,使尴尬的额外像素“均匀”(看看中间的图像,它在宽度上有额外的像素,但在高度上没有),以便所有图像都以相同的方式缩放(根据图像在窗口中放置的位置,额外的像素位于不同的位置,我希望同一图像的每个实例看起来都相同)。

wpf image pixel dpi
1个回答
1
投票

为了将

Image
元素调整到其
PixelWidth
图像的
PixelHeight
Source
的大小,您可以绑定其
Width
Height
,如下所示。

同时将

RenderOptions.BitmapScalingMode
设置为
NearestNeighbor
以避免像素插值。

<Image ...
    Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
    Height="{Binding Source.PixelHeight, RelativeSource={RelativeSource Self}}"
    Stretch="Fill"
    RenderOptions.BitmapScalingMode="NearestNeighbor"/>
© www.soinside.com 2019 - 2024. All rights reserved.