【问题标题】:Tiff images aren't showing actual size in WPF Image controlTiff 图像未在 WPF 图像控件中显示实际大小
【发布时间】: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>

【问题讨论】:

    标签: wpf image tiff


    【解决方案1】:

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

    其中的一些原因已给出here
    Scott Hanselman 在这个问题上也有一些简介here

    【讨论】:

    • 我用 DPI 做了一些计算,看起来确实是因为 WPF 使用“与设备无关的像素为 1/96 英寸”。因此,DPI 越高,它们显示的越小。
    猜你喜欢
    • 2011-03-15
    • 2017-02-18
    • 2013-06-05
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多