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

时间:2011-04-07 11:38:25

标签: c# .net image pixels points

我的图像尺寸为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());
}

2 个答案:

答案 0 :(得分:4)

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

如果您的图像以不同的dpi保存,则WPF会根据您的屏幕分辨率将其显示为“真实”尺寸。 WPF尝试以预期的“英寸”大小显示图像,其中考虑了图像的dpi。

答案 1 :(得分:0)

您可以在Paint.net中打开图像,然后打开图像|调整...对话框。 您可以在那里看到DPI,并在需要时进行调整。