0

ビットマップを ico ファイル形式で保存しようとしていますが、結果ファイルは拡張子が「ico」に変更された PNG 画像になります。

アイコン形式を選択した場合、ImageFormat クラスがビットマップを PNG 形式で保存するのはなぜですか? そして、icoファイルを保存する方法は?

PS: ICO を透過的に保存する必要があります

これは私がprocを呼び出す方法です:

Save_Icon(Resize_Image(Bitmap.FromFile(PictureBox_Regedit.Tag), 24, 24), "Regedit.ico")

そして、これはコードの解像度です

Private Sub Save_Icon(ByVal Source As Bitmap, ByVal Filename As String)

    Try
        If Not Directory.Exists(AppDir) Then Directory.CreateDirectory(AppDir)
        If Not Directory.Exists(AppIcons) Then Directory.CreateDirectory(AppIcons)
        Source.MakeTransparent()
        Source.Save(Path.Combine(AppIcons, Filename), ImageFormat.Icon)
    Catch ex As Exception
        Throw New Exception(ex.Message)
    End Try

End Sub

Private Function Resize_Image(ByVal img As Image, ByVal Width As Int32, ByVal Height As Int32) As Bitmap
    Dim Bitmap_Source As New Bitmap(img)
    Dim Bitmap_Dest As New Bitmap(CInt(Width), CInt(Height))
    Dim Graphic As Graphics = Graphics.FromImage(Bitmap_Dest)
    Graphic.DrawImage(Bitmap_Source, 0, 0, Bitmap_Dest.Width + 1, Bitmap_Dest.Height + 1)
    Return Bitmap_Dest
End Function
4

2 に答える 2

2

ドキュメントにあるように:

MakeTransparent を呼び出すと、ビットマップは Format32bppArgb 形式に変換されます。これは、この形式がアルファ チャネルをサポートしているためです。

アイコンはアルファ チャンネルをサポートしていません。アイコンの透明度は別の方法で実現されます。Save メソッドは、作成中の構造をそのまま維持するために最善を尽くします。したがって、結果は PNG になります。

于 2013-07-18T06:53:39.030 に答える