複数フレームイメージから個々のフレームをコピーする

次の例では、複数フレームの TIFF ファイルから個々のフレームを取得します。 TIFF ファイルが作成されると、個々のフレームがページディメンションに追加されます (「 Multiple-Frame イメージの作成と保存」を参照してください)。 このコードは、4つの各ページを表示し、各ページを別の PNG ディスクファイルに保存します。

このコードは、マルチフレーム TIFF ファイルから イメージ オブジェクトを構築します。 個々のフレーム (ページ) を取得するために、コードはその イメージ オブジェクトの Image:: selectactiveframeメソッドを呼び出します。 Image:: SelectActiveFrame メソッドに渡される最初の引数は、フレームが既にマルチフレーム TIFF ファイルに追加されているディメンションを指定する GUID のアドレスです。 GUID Framedimenのページは、Gdiplusimaging で定義されています。 そのヘッダーファイルで定義されているその他の Guid は、Framedimenの時間および Framedimenを解決します。 Image:: SelectActiveFrame メソッドに渡される2番目の引数は、目的のページの0から始まるインデックスです。

このコードはヘルパー関数 GetEncoderClsid に依存しています。これは、 エンコーダーのクラス識別子を取得するときに表示されます。

GUID   pageGuid = FrameDimensionPage;
CLSID  encoderClsid;
Image  multi(L"Multiframe.tif");

// Get the CLSID of the PNG encoder.
GetEncoderClsid(L"image/png", &encoderClsid);

// Display and save the first page (index 0).
multi.SelectActiveFrame(&pageGuid, 0);
graphics.DrawImage(&multi, 10, 10);
multi.Save(L"Page0.png", &encoderClsid, NULL);

// Display and save the second page.
multi.SelectActiveFrame(&pageGuid, 1);
graphics.DrawImage(&multi, 200, 10);
multi.Save(L"Page1.png", &encoderClsid, NULL);

// Display and save the third page.
multi.SelectActiveFrame(&pageGuid, 2);
graphics.DrawImage(&multi, 10, 150);
multi.Save(L"Page2.png", &encoderClsid, NULL);

// Display and save the fourth page.
multi.SelectActiveFrame(&pageGuid, 3);
graphics.DrawImage(&multi, 200, 150);
multi.Save(L"Page3.png", &encoderClsid, NULL);

次の図は、上記のコードによって表示される個々のページを示しています。

ジオメトリック形状、カラー写真、モノクロ写真、および異なる幾何学図形を示す図