2011-04-11 7 views
19

Pisałem dekoder PCX i jak do tej pory sam obraz PCX parsuje się dobrze, ale nie mogę się dowiedzieć, jak ustawić paletę bitmapy.Nie mogę ustawić palety w bitmapie

Stworzyłem bitmapy tak:

Bitmap bmp = new Bitmap(width, 
         height, 
         stride2, 
         System.Drawing.Imaging.PixelFormat.Format8bppIndexed, 
         pixels); 

Ale nie wydaje się ustawić paletę stosując następujące metody:

for (int i = 0; i < 256; i += 3) 
{ 
    Color b = new Color(); 
    b = Color.FromArgb(palette[i], palette[i + 1], palette[i + 2]); 
    bmp.Palette.Entries.SetValue(b, i); 
} 

W tym przykładzie, czytałem przez każdy bajt na palecie pliku pcx i zapisał je w palecie []. stamtąd użyłem tego do ustawienia wpisów w palecie bitmapy. Jak ustawić kolory?

+0

nie martw się naprawić go teraz. – user646265

Odpowiedz

29

To też mnie zdezorientowało. Wygląda na bitmapę. Palette zwraca klon palety bitmapy. Po zmodyfikowaniu kopii musisz zresetować paletę bitmapy za pomocą bitmap.Palette = palette, np.

ColorPalette palette = bitmap.Palette; 
Color entries = palette.Entries; 
.... 
entries[i] = new Color(...); 
.... 
bitmap.Palette = palette; // The crucial statement 

Zobacz http://www.charlespetzold.com/pwcs/PaletteChange.html

+0

Tak, myślę, że masz rację, to zwraca klon, to jedyne wyjaśnienie, które znam. – Pedro77

Powiązane problemy