投稿者 葉月  (社会人) 投稿日時 2010/5/25 01:36:00
もう深夜時間ですね。投稿して気付きました。
時間が遅いので、中途半端なコードを載せます。
今日の夜に気力があれば、また取り組みます。

マイピクチャーにsample1.bmpとsample2.bmpを置いてください。
ピクチャーボックスを一個用意し、
Formに張り付けてDockしてください。
時間がないので中途半端な出来ですが一応動きます。
コメントは殴り書きなので、変なこと書いてるかも知れません。

>サンプル
Public Class Form1

    ''' <summary> 
    ''' マイピクチャーのパス 
    ''' </summary> 
    ''' <returns>マイピクチャーのパス</returns> 
    Private ReadOnly Property GetPicturePath()
        Get
            Dim strImgPath As String
            strImgPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)

            Return strImgPath
        End Get
    End Property


    Private Sub PictureBox1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles PictureBox1.Click

        ' グラフィックス 
        Dim g As Graphics = PictureBox1.CreateGraphics()

        ' イメージ 
        Dim strImgPath As String = String.Concat(GetPicturePath, "\sample.bmp")

        ' イメージの読み込み 
        Dim img As Image = Image.FromFile(strImgPath)

        ' 徐々に透過 
        Dim j As Integer = 1

        For i = 9 To 0 Step -1
            ImageChange(g, img, i * 0.1F)
            System.Threading.Thread.Sleep(300)
            ImageChange(g, j * 0.1F)
            System.Threading.Thread.Sleep(300)
            j += 1
        Next

        ' リソース解放処理 
        img.Dispose()
        g.Dispose()
    End Sub


    ''' <summary> 
    ''' (ポリモフィズム)イメージを切り替える。 
    ''' </summary> 
    ''' <param name="g">グラフィックスメソッド</param> 
    ''' <param name="alpha">アルファ値</param> 
    Public Shared Sub ImageChange(ByVal g As Graphics, ByVal alpha As Single)
        ' パス 
        Dim strImgPath As String = Form1.GetPicturePath + "\sample2.bmp"
        ' 読み込むイメージ 
        Dim img As Image = Image.FromFile(strImgPath)
        ImageChange(g, img, alpha)
    End Sub

    ''' <summary> 
    ''' イメージを切り替える。 
    ''' </summary> 
    ''' <param name="g">グラフィックスメソッド</param> 
    ''' <param name="img">イメージ</param> 
    ''' <param name="alpha">アルファ値</param> 
    ''' <remarks></remarks> 
    Public Shared Sub ImageChange(ByVal g As Graphics, _
            ByVal img As Image, ByVal alpha As Single)

        ' 読み込む画像 
        Dim back As New Bitmap(img.Width, img.Height)

        ' グラフィックス 
        Dim bg As Graphics = Graphics.FromImage(back)

        ' 透過に必要な値 
        Dim cm As New System.Drawing.Imaging.ColorMatrix

        cm.Matrix00 = 1
        cm.Matrix11 = 1
        cm.Matrix22 = 1
        cm.Matrix33 = alpha
        cm.Matrix44 = 1

        ' cmの値をカラーマトリックスとして設定 
        Dim attr As New System.Drawing.Imaging.ImageAttributes
        attr.SetColorMatrix(cm)

        bg.DrawImage(img, New Rectangle(0, 0, img.Width, img.Height), _
                     0, 0, img.Width, img.Height, GraphicsUnit.Pixel, attr)

        g.DrawImage(back, 0, 0)

        ' リソース解放 
        bg.Dispose()
        back.Dispose()
    End Sub
End Class