当我在我的WPF应用程序中显示JPEG(使用下面的代码)时,它显示比我在Windows Picture Viewer中以实际大小打开JPEG时要小得多.
我已经在运行时钻进了我的ImageSource的属性,我的图像有:
当我使用屏幕标尺来测量图像的WPF显示时,我得到了大约.313x240像素(如果我可以完美地定位标尺,则可能等于ImageSource报告的宽度和高度.).
我的直觉告诉我这与WPF使用独立于设备的单位(而不是像素)有关,但我无法理解它,我仍然需要知道如何以'实际'尺寸显示图像543x713在我的申请中.
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<StackPanel>
<Image Source="Image15.jpg" Stretch="None" />
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
谢谢马克!我根据你的信息做了一些谷歌搜索,发现这篇文章提供了一个解决方案,以获得我想要的结果.现在开始有意义......
编辑:Linkrot.粘贴文章中的关键文本以供参考....
<Image Source=”{Binding …}”
Stretch=”Uniform”
Width=”{Binding Source.PixelWidth,RelativeSource={RelativeSource Self}}”
Height=”{Binding Source.PixelHeight,RelativeSource={RelativeSource Self}}” />
Run Code Online (Sandbox Code Playgroud)
这里我们将Stretch设置为Uniform并将Width和Height绑定到PixelWidth和Source的PixelHeight,实际上忽略了DPI.然而,即使使用SnapToDevicePixels(它只是捕捉边框,而不是图像中的像素),图像也不会是像素>完美的.但是,3.5 SP1中的WPF将支持NearestNeighbor> BitmapScalingMode,它应该更正此问题.
使用 96 的 DPI。WPF 根据以英寸为单位的大小缩放图像,而图像查看器显示像素。在大多数 Windows 系统上,假定屏幕分辨率为 96 DPI,因此在图像中使用它会导致一对一转换。