在 Metro Win 8 应用程序中打开多页 TIF 文件作为图像源

本文关键字:文件 TIF 图像 Win Metro 应用程序 | 更新日期: 2023-09-27 18:31:40

可以很容易地在

地铁应用程序中将TiF(或TIFF)文件设置为图像源...

Image imm = new Image();
imm.Source = new BitmapImage(new Uri(filetiff_path));

问题是图像中显示的内容始终是 Tif 的第一页,我无法将内容设置为源文件的另一页。

在WPF应用程序中,我可以使用System.Windows.Media.Imaging.TiffBitmapDecoder类来做到这一点,它似乎在Metro Win 8应用程序中不存在。

Stream imageStreamSource = new FileStream(filetiff_path, FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[indexPage];

其中索引页面是我想查看的页面编号。

有人知道类似的解决方案吗?

在 Metro Win 8 应用程序中打开多页 TIF 文件作为图像源

我对 TiffBitmapDecoder 和 Metro WPF 都没有任何经验,但我之前在 WPF 中使用过类似的东西,如下所示:

using (System.Drawing.Image imageFile = System.Drawing.Image.FromFile("temp.tif"))
{
    System.Drawing.Imaging.FrameDimension frameDimensions = new System.Drawing.Imaging.FrameDimension(imageFile.FrameDimensionsList[0]);
    imageFile.SelectActiveFrame(frameDimensions, indexPage);
    using (System.Drawing.Bitmap newImage = new System.Drawing.Bitmap(imageFile.Size.Width, imageFile.Size.Height))
    {
        using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(newImage))
        {
            gr.Clear(System.Drawing.Color.White);
            gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            gr.DrawImage(imageFile, new System.Drawing.Rectangle(new System.Drawing.Point(0, 0), imageFile.Size));
        }
        //do whatever with the newImage bitmap
    }
}

SelectActiveFrame是你需要的点,所以你可以尝试一下,如果它也适合你......