调色板问题,一团雾水,求助
CBitmap btmp;
btmp.LoadBitmap (IDB_BITMAP6);
HBITMAP hbitmap=HBITMAP(btmp );
if (!hbitmap)
return ;
GetObject(hbitmap,sizeof(bm),(LPSTR)&bm);
HDIB hDib=::DibFromBitmap (hbitmap,BI_RGB, 0,NULL);
if (!hDib)
return ;
//测试:hDib可以显示出来(看起来正确,但是
lpDIB=(LPSTR )::GlobalLock((HGLOBAL)hDib);
.........
//结果lpDIB里的调色板为空
//BITMAPINFOHEADER 里的biBitCount=32,可是应该biBitCount=8
//问题出在哪里,我该怎么做
问题点数:115、回复次数:3Top
1 楼lhuchong()回复于 2001-12-27 17:10:43 得分 115
32位24位的bmp没有调色板Top
2 楼Belle(不会游泳的鱼....)回复于 2001-12-27 20:16:49 得分 0
谢谢 lhuchong(令狐虫)
怎么才能够从一个CBitmap哪儿得到他的调色板呢
如果因为CBitmap没有没有调色板,不能得到,能不能自己做一个
该怎么做一个调色板呢,谁有代码提拔以下,谢谢!!!Top
3 楼Belle(不会游泳的鱼....)回复于 2001-12-31 17:33:19 得分 0
过年了,结帐
答案还是该帖出来的
//创建调色板
CPalette* pPal;
LPLOGPALETTE lp;
HANDLE hpal;
hpal=::GlobalAlloc (GMEM_MOVEABLE,sizeof(LPLOGPALETTE)+256*sizeof(PALETTEENTRY));
lp=(LPLOGPALETTE)::GlobalLock (hpal);
lp->palVersion =0x300;
lp->palNumEntries =256;
int i;
for(i=0;i<85;i++)
{
lp->palPalEntry [i].peRed =0;
lp->palPalEntry [i].peGreen =0;
lp->palPalEntry [i].peBlue =0;
lp->palPalEntry [i].peFlags =0;
}
//create 85 red blue green color
for(i=0;i<256;i++)
{
lp->palPalEntry [i].peRed =(BYTE)i*3;
lp->palPalEntry [i].peFlags =0;
lp->palPalEntry [i+86].peBlue =(BYTE)i*3;
lp->palPalEntry [i+86].peFlags =0;
lp->palPalEntry [i+171].peGreen =(BYTE)i*3;
lp->palPalEntry [i+171].peFlags =0
}
pPal=new CPalette;
pPal->CreatePalette (lp);
::GlobalUnlock (hpal);Top




