11

Bitmap画像をからWindowsアイコンに変換しようとしています。これがコードです。

private void btnCnvrtSave_Click(object sender, EventArgs e)
{
    Bitmap bmp = (Bitmap)picturePanel.BackgroundImage;
    Bitmap newBmp = new Bitmap(bmp);
    Bitmap targetBmp = newBmp.Clone(new Rectangle(0, 0, newBmp.Width, newBmp.Height), PixelFormat.Format64bppArgb);
    IntPtr Hicon = targetBmp.GetHicon();
    Icon myIcon = Icon.FromHandle(Hicon);

    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Title = "Save Icon";
    sfd.Filter = "Icon|*.ico";
    sfd.ShowDialog();

    FileStream fileStream = new FileStream(sfd.FileName,FileMode.OpenOrCreate);
    myIcon.Save(fileStream);
    fileStream.Flush();
    fileStream.Close();

    MessageBox.Show("Image is converted successfully!");
}

コードは正常に機能していますが、問題は、画像をアイコンに変換すると、変換されたアイコンが実際の色とグラデーション(画像に表示)を失うことです。それで、色を失うことなく画像を変換する方法はありますか?

これは私のアイコンがどのように見えるかです。

変換の前後

4

1 に答える 1

3

.Net にはアイコン エンコーダがないため、これは .Net の既知の問題です。考えられる回避策については、以下を参照してください。

有効なアイコン ファイルを作成する

ビットマップをアイコンに変換する問題

于 2012-07-25T17:09:34.067 に答える