投稿者 モル  (社会人) 投稿日時 2009/12/4 20:52:36
少し前にコントラストのやり方を聞いたモルです。
今回ご教授願いたいのは「半透明化を行って表示したPictureBoxの画像を透明処理が行われたまま保存するには?」というものです。

中学校様のサンプルに載せてありました半透明化のプログラムを少し加工してますが、
    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        Dim MImage As Image = Image.FromFile("C:\Test.JPG")
        With PictureBox1
            .Width = MImage.Width
            .Height = MImage.Height
        End With

        Dim g As Graphics = AutoGraphics(PictureBox1)
        Dim cm As New System.Drawing.Imaging.ColorMatrix()
        cm.Matrix00 = 1
        cm.Matrix11 = 1
        cm.Matrix22 = 1
        cm.Matrix33 = 0.5F
        cm.Matrix44 = 1
        Dim ia As New System.Drawing.Imaging.ImageAttributes()
        ia.SetColorMatrix(cm)
        g.DrawImage(MImage, New Rectangle(0, 0, MImage.Width, MImage.Height), _
                                0, 0, MImage.Width, MImage.Height, GraphicsUnit.Pixel, ia)
        'リソースを開放する 
        MImage.Dispose() : g.Dispose()
End Sub

    Private Function AutoGraphics(ByVal picSource As PictureBox) As Graphics
        If picSource.Image Is Nothing Then
            picSource.Image = New Bitmap(picSource.ClientRectangle.Width, picSource.ClientRectangle.Height)
        End If
        Return Graphics.FromImage(picSource.Image)
    End Function

上記のプログラムにて、半透明化させて表示しているPictureBox1の画像を保存したいのです。

PictureBox1.Image.Save("C:\aa.JPG")
とやっても半透明じゃない元の画像のまま保存されてしまいます。
透明化処理を行った画像の保存の方法をお教え下さい。
お願いします。

ちなみにお教えくださったコントラストでの保存は、キチンとコントラストがかかったまま保存できました。