1

メトロ アプリケーションで TiF (または TIFF) ファイルをイメージ ソースとして非常に簡単に設定することができます...

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

問題は、画像に表示されているコンテンツが常に Tif の最初のページであり、コンテンツをソース ファイルの別のページに設定できないことです。

WPF アプリでは、Metro Win 8 アプリには存在しないように見える System.Windows.Media.Imaging.TiffBitmapDecoder クラスでそれを行うことができます

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 に答える