在WPF图像控件中,Tiff图像未显示实际大小

时间:2012-03-12 18:03:17

标签: wpf image tiff

我一直在研究WPF应用程序,需要能够以实际大小显示多页tiff并适合屏幕。我从另一个StackOverflow线程获得的代码非常适合以实际大小显示其中的一些,但是新扫描的大约1700 x 800的tiff文件显示为大约600 x 400.

我想要实现的基本上是Windows Photo Viewer如何显示图像的副本。您可以看到它们适合屏幕,或按一个按钮,如果需要,它会使用滚动条缩放到实际大小。我有2个tiffs工作。 1是从mspaint保存为tiff的JPEG,另一个(2)是较旧的扫描文档。 1是180dpi,32位深度,LZW压缩和2分辨率单位,它是用数码相机拍摄的。 2是200 dpi,1位深度,2个分辨率单位,CCITT t.6压缩,它是一个扫描文件。不起作用的文件是300dpi,但与#2相同。

以下是我用来显示图片的代码。

// Open a Stream and decode a TIFF image
Stream imageStreamSource = new FileStream("C:\\Users\\cblair\\Documents\\Visual Studio 2010\\Projects\\WpfApplication1\\WpfApplication1\\flowers.tif", FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];
 // Draw the Image
myImage.Source = bitmapSource;

和XML

<ScrollViewer HorizontalScrollBarVisibility="auto"> <Viewbox> <Image x:Name="myImage" /> </Viewbox> </ScrollViewer>

1 个答案:

答案 0 :(得分:2)

WPF考虑了图像的dpi。如果您有2个不同的图像,两者都是800x600像素,一个是300 dpi,另一个是200 dpi;这两个图像将在WPF应用程序中显示为不同的大小。

给出了here的一些原因 斯科特汉塞尔曼在这个问题上也有一点点模糊here