我现一张256色 32*32使用索引的位图。它的大小是1.39k。如果按照调色板256项*4Byte
的话,加上32*32Byte象素索引,再怎么也至少要2k吧。
是否不同的每张位图颜色表(调色板)大小不一样呢?
如果不一样我如何取得调色板大小。
如果调色板大小不一,我如何获得位图资源(不是文件)的图像数据区?
的话,加上32*32Byte象素索引,再怎么也至少要2k吧。
是否不同的每张位图颜色表(调色板)大小不一样呢?
如果不一样我如何取得调色板大小。
如果调色板大小不一,我如何获得位图资源(不是文件)的图像数据区?
没有压缩啊。我现在把装载的位图资源,显示出来:
HGLOBAL hBMP[13];
HINSTANCE hInstance=AfxGetInstanceHandle();
HRSRC hResource = ::FindResource(hInstance, MAKEINTRESOURCE(IDB_BITMAP1+i),RT_BITMAP);
hBMP[i] = ::LoadResource(hInstance, hResource);
BITMAPINFO *lptrInfo=(BITMAPINFO *)LockResource(hBMP[i]);for(int j=0;j<=255;j++)//获取调色板
{
PatternArray[i]->Palette[j].Blue =(lptrInfo->bmiColors+j)->rgbBlue;
PatternArray[i]->Palette[j].Green=(lptrInfo->bmiColors+j)->rgbGreen;
PatternArray[i]->Palette[j].Red =(lptrInfo->bmiColors+j)->rgbRed;
}
PatternArray[i]->Data=(BYTE *)LockResource(hBMP[i])+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256;//此处取位图象数据。
可是显示出来的位图不正确。
我这样取资源数据不知正确否?
判断BITMAPINFOHEADER的biClrUser值域,直接Lock:
hBMP[i])+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256;
而取得位数据,是极有可能错误的..