【发布时间】:2012-03-12 18:03:17
【问题描述】:
我一直在开发 WPF 应用程序,并且需要能够以实际大小显示多页 tiff 并适合屏幕。我从另一个 StackOverflow 线程获得的代码非常适合以实际大小显示它们中的一些,但是新扫描的大约 1700 x 800 的 tiff 文件显示为大约 600 x 400。
我想要实现的基本上是 Windows 照片查看器如何向您显示图像的副本。您可以看到它们适合屏幕,或者按一个按钮,如果需要,它会使用滚动条缩放到实际大小。我有 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>
【问题讨论】: