2012-07-24 14 views
11

Próbuję przekonwertować obraz z Bitmap na ikonę systemu Windows. To jest kod.Konwertowanie bitmapy na ikonę

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!"); 
} 

Kod działa poprawnie, ale problem jest, kiedy konwertować obraz do ikony ikona przerobiona traci swoje prawdziwe kolory i gradienty (pokazane na zdjęciu). Czy istnieje sposób, w jaki mogę przekonwertować obraz bez utraty jego kolorów?

Tak właśnie wygląda moja ikona.

Before and after converting

+1

To wygląda podstawowej palety kolorów 4bpp. Nie mam pojęcia, dlaczego tak się dzieje. –

+0

Co powiesz na tworzenie ikony z uchwytu? – danish

+5

Nie wiem jak, ok, spróbuję wyszukać w google.Jeśli masz jakiś link do przykładu ... proszę podać. Dziękuję. – kakarott

Odpowiedz