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

relj7zay  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(204)

我有一个图像是24 x24。如果我没有在xaml中输入width和height,并设置Stretch=“None”,我的24 x24的大小将达到32 x32。“无拉伸”不应该意味着图像以24 x24显示吗?
如果我强行将图像设置为24 x24,那么我会得到原始图像中不存在的额外像素。
我想将图像显示在100%的大小/规模与“像素完美”/“点过滤”渲染。

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

无论哪种方式,即使我修复,使图像DPI是相同的,我的屏幕DPI(不知道如何检查,要么)不会有一个问题,对其他人的屏幕?我不希望图像是像素完美的只有96 DPI屏幕上。我希望它总是像素完美,我总是希望1像素的图像对应于1像素的应用程序/屏幕上。
这在WPF中是不可能实现的吗?如果是的话,我怎么能至少让尴尬的额外像素是“均匀的”(看看中间的图像,它在宽度上有额外的像素,但不是高度),并使所有图像以相同的方式缩放(取决于图像在窗口中的位置,额外的像素在不同的地方,我希望同一图像的每个示例看起来都一样)。

dphi5xsq

dphi5xsq1#

为了将Image元素的大小调整为其Source图像的PixelWidthPixelHeight,您可以像下面所示的那样绑定其WidthHeight
同时将RenderOptions.BitmapScalingMode设置为NearestNeighbor,以避免像素插值。

<Image ...
    Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
    Height="{Binding Source.PixelHeight, RelativeSource={RelativeSource Self}}"
    Stretch="Fill"
    RenderOptions.BitmapScalingMode="NearestNeighbor"/>

相关问题