從多框架影像複製個別畫面格
下列範例會從多框架 TIFF 檔案擷取個別畫面格。 建立 TIFF 檔案時,個別框架會新增至 Page 維度(請參閱 建立和儲存 Multiple-Frame 影像)。 此程式代碼會顯示四個頁面的每一個,並將每個頁面儲存至個別的 PNG 磁碟檔案。
程序代碼會從多框架 TIFF 檔案建構 Image 物件。 若要擷取個別畫面格(pages),程式代碼會呼叫該 Image 物件的 Image::SelectActiveFrame 方法。 傳遞至 Image::SelectActiveFrame 方法的第一個自變數是 GUID 的位址,指定框架先前新增至多框架 TIFF 檔案的維度。 GUID FrameDimensionPage 定義於 Gdiplusimaging.h 中。 在該頭檔中定義的其他 GUID 是 FrameDimensionTime 和 FrameDimensionResolution。 傳遞至 Image::SelectActiveFrame 方法的第二個自變數是所需頁面的以零起始的索引。
程式代碼依賴 Helper 函式 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);
下圖顯示上述程式代碼所顯示的個別頁面。