2011-04-11 14 views
19

Ho scritto un decodificatore PCX e, finora, l'immagine PCX analizza bene, ma non riesco a capire come impostare la tavolozza di una bitmap.Impossibile impostare la tavolozza in bitmap

ho creato una bitmap in questo modo:

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

Ma io non riesco a impostare la tavolozza utilizzando il seguente metodo:

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

In questo esempio, ho letto attraverso ogni byte nella palette del file pcx e memorizzati nella tavolozza []. da lì, ho usato questo per impostare le voci nella tavolozza della bitmap. Come posso impostare i colori?

+0

non ti preoccupare fisso ora. – user646265

risposta

29

Questo mi ha anche confuso. Sembra bitmap.Palette restituisce un clone della tavolozza della bitmap. Dopo aver modificato la copia, è necessario ripristinare il pallet della bitmap utilizzando bitmap.Palette = palette, ad es.

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

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

+0

Sì, penso che tu abbia ragione, restituisce un clone, è l'unica spiegazione che conosco. – Pedro77

Problemi correlati