请教,在用图片做背景的时候,需要读取文件头中的图片大小属性。比如BITMAP就有个BITMAPHEADER属性,在读取的时候需要先获取这个文件头,读取其中的文件高宽,才可以设置填充背景。我想问的是,不同格式的图片是不是需要文件头不同处理方式,比如GIF文件是不是也有个类似于BITMAPHEAER的结构,如果每种图片都要这么处理下,好像有点麻烦。有没有一种统一的方法进行处理的。谢谢
调试欢乐多
其成员函数GetWidth、GetHeight 得到当前图像宽度、高度的像素值。
// 读取位图属性
nWidth = bkImg.lpMapInfo->bmiHeader.biWidth;
nHeight = bkImg.lpMapInfo->bmiHeader.biHeight;
nCount = bkImg.lpMapInfo->bmiHeader.biBitCount;
// 位图的大小
nDIBSize = (nWidth * nCount + 31) / 32 * 4;
nDIBSize = nDIBSize * nHeight;
bkImg.nDIBits = nDIBSize;
bkImg.lpDIBits = new BYTE[nDIBSize];
// 如果有颜色表,读之
lpBuffer = lpBuffer + nSize;
if (nCount < 9)
{
nSize = (1 << nCount) * 4;
ReadFile(hFile, lpBuffer, nSize, &nCount, NULL);
}
//****** 读取文件DIB ******
SetFilePointer(hFile, bfHeader.bfOffBits, 0, FILE_BEGIN);
ReadFile(hFile, bkImg.lpDIBits, nDIBSize, &nCount, NULL);
if (nDIBSize != nCount)
{
楼主也可以尝试用GDI+的Image类加载图片 然后利用成员函数获得图片属性