. net将像素转换为点并创建错误的图像大小

本文关键字:错误 图像 创建 像素 转换 net | 更新日期: 2023-09-27 17:48:59

我有一张大小为144像素的图像(我使用irfanView和Photoshop测量了图像大小)

然而,当使用下面的xaml在窗口中打开时,图像的宽度,由ActualWidth参数和相同的图形软件测量,是192像素。

结果是141点= 192像素(如1pt=1.33px)。

因此,似乎。net打开图像,以像素为单位测量它的大小,并以相同的大小绘制图像,但以点为单位。

代码如下:

<Window x:Class="test_image_resizing.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" WindowState="Maximized" Loaded="Window_Loaded">
    <Grid> 
        <Image 
            x:Name="test"  
            VerticalAlignment="Top" 
            HorizontalAlignment="Center" 
            Stretch="None" 
            Source="/test%20image%20resizing;component/Resources/Test.png" />
    </Grid>
</Window>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("test=" + test.ActualWidth.ToString());
}

. net将像素转换为点并创建错误的图像大小

WPF在显示图像之前查看图像的dpi。如果你有一张144像素宽的图像,保存为96 dpi;然后在大多数计算机上,WPF将显示为144像素宽(因为大多数计算机设置为96 dpi屏幕分辨率)。

如果你的图像以不同的dpi保存,那么WPF将根据你的屏幕分辨率以它认为的"真实"大小显示它。WPF试图以预期的"英寸"尺寸显示图像,这考虑到图像的dpi。

您可以在Paint.net中打开图像,然后打开image | Resize…对话框。你可以在这里看到DPI,并根据需要进行调整。