2011-04-11 14 views
19

में पैलेट सेट नहीं कर सकता है, मैं एक पीसीएक्स डिकोडर लिख रहा हूं और अब तक, पीसीएक्स छवि स्वयं ठीक है, लेकिन मैं बिटमैप के पैलेट को सेट करने का तरीका नहीं समझ सकता।बिटमैप

मैं बहुत की तरह एक बिटमैप पैदा की है:

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

लेकिन मैं निम्नलिखित पद्धति का उपयोग करके पैलेट सेट नहीं कर पा रहे:

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

इस उदाहरण में, मैं प्रत्येक के माध्यम से पढ़ा है पीसीटी फ़ाइल के पैलेट में बाइट और उन्हें पैलेट में संग्रहीत []। वहां से, मैंने बिटमैप के पैलेट में प्रविष्टियों को सेट करने के लिए इसका उपयोग किया है। मैं रंग कैसे सेट करूं?

+0

इसे अभी तय चिंता नहीं देखें। – user646265

उत्तर

29

यह मुझे भी उलझन में था। ऐसा लगता है कि bitmap.Palette बिटमैप के पैलेट का क्लोन देता है। एक बार जब आप अपनी प्रतिलिपि संशोधित कर लेंगे, तो आपको bitmap.Palette = palette का उपयोग करके बिटमैप की पालीट को रीसेट करने की आवश्यकता है, उदा।

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

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

+0

हाँ, मुझे लगता है कि आप सही हैं, यह एक क्लोन लौटाता है, यह एकमात्र स्पष्टीकरण है जिसे मैं जानता हूं। – Pedro77

संबंधित मुद्दे