. 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());
}
WPF在显示图像之前查看图像的dpi。如果你有一张144像素宽的图像,保存为96 dpi;然后在大多数计算机上,WPF将显示为144像素宽(因为大多数计算机设置为96 dpi屏幕分辨率)。
如果你的图像以不同的dpi保存,那么WPF将根据你的屏幕分辨率以它认为的"真实"大小显示它。WPF试图以预期的"英寸"尺寸显示图像,这考虑到图像的dpi。
您可以在Paint.net中打开图像,然后打开image | Resize…对话框。你可以在这里看到DPI,并根据需要进行调整。