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

我有一个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());
}
    
已邀请:
WPF在显示之前查看图像的dpi。如果您的图像宽度为144像素,则以96 dpi保存;然后在大多数计算机上,WPF会将其显示为144像素宽(因为大多数计算机的屏幕分辨率设置为96 dpi)。 如果您的图像以不同的dpi保存,则WPF将根据您的屏幕分辨率将其显示为“真实”大小。 WPF尝试以预期的“英寸”大小显示图像,这考虑了图像的dpi。     
您可以在Paint.net中打开图像,然后打开Image |调整...对话框。 您可以在那里看到DPI并根据需要进行调整。     

要回复问题请先登录注册