1

我有一个大小为 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());
}
4

2 回答 2

4

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

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

于 2011-04-07T11:45:59.320 回答
0

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

于 2011-04-07T12:05:17.840 回答