.NET将像素转换为点并创建错误的图像大小
问题描述:
我有一个尺寸为144像素的图像(我使用irfanView和Photoshop测量图像大小)。.NET将像素转换为点并创建错误的图像大小
但是,使用以下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。
谢谢,图像确实保存为72dpi。恢复到96dpi解决了这个问题。 – Doigen 2011-04-10 06:11:13