1

可以很容易地将 Metro 应用程序中的 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];

其中 indexPage 是我要查看的页面的编号。

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

4

1 回答 1

-1

我对 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 是您需要的地方,所以如果它也适合您,您可以尝试...

于 2013-09-18T10:11:48.560 回答