DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

マルチTIFFやアニメーションGIFに含まれるすべてのイメージを表示する

補足:画像の表示方法が分からないという方は、まず「画像ファイルを表示する」をご覧ください。

マルチTIFFやアニメーションGIFのように複数のイメージを含んだ画像ファイルからすべてのイメージを取り出して表示するには、Image.SelectActiveFrameメソッドでアクティブなフレームを変更し、すべてのフレームのイメージを表示するようにすればよいでしょう。

まず、複数のイメージを含んだ画像ファイルをImageオブジェクトに読み込みます。そして、Image.FrameDimensionsListプロパティにより、フレームのディメンションGUIDを取得し、これからFrameDimensionオブジェクトを作成します。これを使用して、SelectActiveFrameメソッドを呼び出します。

以下にアニメーションGIFファイル(C:\test.gif)内のすべてのイメージをPictureBox(PictureBox1)に表示するサンプルを示します。

[VB.NET]
'画像ファイルのパス
Dim filePath As String = "C:\test.gif"

Dim g As Graphics = PictureBox1.CreateGraphics()

'画像を読み込む
Dim img As Image = Image.FromFile(filePath)
'FrameDimensionを取得
Dim fd As New FrameDimension(img.FrameDimensionsList(0))
'フレーム数を取得
Dim fd_count As Integer = img.GetFrameCount(fd)
Dim y As Integer = 0
Dim i As Integer
For i = 0 To fd_count - 1
    'フレームを選択
    img.SelectActiveFrame(fd, i)
    '画像を表示
    g.DrawImage(img, 0, y, img.Width, img.Height)
    y += img.Height
Next i

img.Dispose()
g.Dispose()
[C#]
//画像ファイルのパス
string filePath = "C:\\test.gif";

Graphics g = PictureBox1.CreateGraphics();

//画像を読み込む
Image img = Image.FromFile(filePath);
//FrameDimensionを取得
FrameDimension fd = new FrameDimension(img.FrameDimensionsList[0]);
//フレーム数を取得
int fd_count = img.GetFrameCount(fd);
int y = 0;
for (int i = 0; i < fd_count; i++)
{
    //フレームを選択
    img.SelectActiveFrame(fd, i);
    //画像を表示
    g.DrawImage(img, 0, y, img.Width, img.Height);
    y += img.Height;
}

img.Dispose();
g.Dispose();

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。