正在加载图片...
hPal=LocalAlloc(lhnd, sizeof(LOGPALETTE)+ Num Colors* sizeof(PALETTEENTRY)) pPal =(LOGPALETTE *)LocalLock(hPal) pPal->pal Version=0X300 for(i=0,1<256;计++){ ∥读取调色板中的RGB值 Pal->palPal Entry[]. peRed=(BYTE)fgetc(PCXfp); pPal->palPal[i]. pe Green=(BYTE)fgetc( PCXfp) pPal->palPalEntry[i]- peBlue=(BYTE)fgetc( PCXfp); pPal->palPal[i] peFlags=(BYTE)0; *(IpPtr++=(unsigned char)pPal->palPalEntry[ i]- pe Blue (IpPtr++)(unsigned char)pPal->palPal Entry [i]- pe Green *(IpPtr++ =(unsigned char)pPal->palPalEntry[ i]- peRed *(lpPt++)=0 ∥产生新的逻辑调色板 hPalette=CreatePalette(pPal Local Unlock(hPal) Local Free(hPal) hDc=GetDC(hWnd) if(pAlette) hPrevPalette=SelectPalette(hDc, hPalette, FALSE) RealizePalette(hDc) ∥解码行所占的字节数 PexBytesPer Line=(unsigned int) header, bytes per line ∥将文件指针指向图象数据的开始处 seek(PCXfp, (LONG)Sizeof( PCXHEAD), SEEK SET) ∥缓冲区大小 OffBits=bf. bfoffBits-sizeof(BI TMAPFILEHEADER) BufSize为缓冲区大小 BufSize=OffBits+bi. biHeight*Line Bytes; for(y=0; y<bi. biHeight; y++) ∥指向新图中相应的位置 lpPtr=(char *)lplmg Data+ BufSize-Line Bytes-y*Line Bytes ∥解码该行,放在数组 LineBuffer中 ReadPcxLine(line Buffer, PCXfp)hPal=LocalAlloc(LHND,sizeof(LOGPALETTE)+ NumColors* sizeof(PALETTEENTRY)); pPal =(LOGPALETTE *)LocalLock(hPal); pPal->palNumEntries =256; pPal->palVersion = 0x300; for (i = 0; i < 256; i++) { //读取调色板中的 RGB 值 pPal->palPalEntry[i].peRed=(BYTE)fgetc(PCXfp); pPal->palPalEntry[i].peGreen=(BYTE)fgetc(PCXfp); pPal->palPalEntry[i].peBlue=(BYTE)fgetc(PCXfp); pPal->palPalEntry[i].peFlags=(BYTE)0; *(lpPtr++)=(unsigned char)pPal->palPalEntry[i].peBlue; *(lpPtr++)=(unsigned char)pPal->palPalEntry[i].peGreen; *(lpPtr++)=(unsigned char)pPal->palPalEntry[i].peRed; *(lpPtr++)=0; } //产生新的逻辑调色板 hPalette=CreatePalette(pPal); LocalUnlock(hPal); LocalFree(hPal); hDc=GetDC(hWnd); if(hPalette){ hPrevPalette=SelectPalette(hDc,hPalette,FALSE); RealizePalette(hDc); } //解码行所占的字节数 PcxBytesPerLine=(unsigned int)header.bytes_per_line; //将文件指针指向图象数据的开始处 fseek(PCXfp,(LONG)sizeof(PCXHEAD),SEEK_SET); //缓冲区大小 OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER); //BufSize 为缓冲区大小 BufSize=OffBits+bi.biHeight*LineBytes; for(y=0;y<bi.biHeight;y++){ //指向新图中相应的位置 lpPtr=(char *)lpImgData+BufSize-LineBytes-y*LineBytes; //解码该行,放在数组 LineBuffer 中 ReadPcxLine(LineBuffer,PCXfp);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有