2011-04-11 7 views
19

저는 PCX 디코더를 작성해 왔으며, 지금까지 PCX 이미지 자체를 파싱했지만 비트 맵 팔레트를 설정하는 방법을 배울 수는 없습니다.비트 맵에서 팔레트를 설정할 수 없습니다.

난과 같이 비트 맵을 만들었습니다

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

을, 나는 각을 읽고 바이트를 pcx 파일의 팔레트에 넣고 [] 팔레트에 저장하십시오. 거기에서, 나는 이것을 사용하여 비트 맵의 ​​팔레트에 엔트리를 설정했다. 색상을 어떻게 설정합니까?

+0

http://www.charlespetzold.com/pwcs/PaletteChange.html 지금 고정 걱정하지 마십시오 참조하십시오. – user646265

답변

29

이것은 나도 혼란스러워했다. 그것은 비트 맵 것 같습니다. 팔레트는 비트 맵 팔레트의 복제본을 반환합니다. 사본을 수정 한 후 bitmap.Palette = palette을 사용하여 비트 맵의 ​​팔레트를 재설정해야합니다.

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

+0

그래, 나는 네가 옳다고 생각해, 복제품을 돌려 준다. 내가 아는 유일한 설명이다. – Pedro77

관련 문제