( IpTempPtr++)=0,∥在新图中,该行中共有num个黑点 se{∥垂直投影 for(x=0; x<bi bi Width, x++)4 num=0,∥/计数器初始化为0 for(y=0; y<bi. biHeight; y++) if( lpPtr! num++;∥/计数器加1 lpTempPtr=(char *)IpTemplmg Data+OffBits+x *lp Ptr=0,∥在新图中,该列中共有num个黑点 IpTempPtr+=Line Bytes f(hBitmap!=NULL) DeleteObject(hBitmap hDc=GetDC(hWnd ∥)创立一个新的位图 hBitmap-CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)Ip TemplmgData (LONG CBM INIT (LPSTR)Ip Templmg Data+ sizeof( BI TMAPINFOHEADER)+ NumColors*sizeof( RGBQUAD). (LPBITMAPINFO)IpTemplmg Data DIB RGB COLORS) ∥起不同的结果文件名 if(Hori) hf- Creat("c: \project. bmp",0); lse hf- Creat("c: Ilvproject bmp",O) I write(hf, (LPSTR)&bf, sizeof( BITMAPFILEHEADER)) Iwrite(hf, (LPSTR)IpTemplmg Data, BufSize Iclose(hf)*(lpTempPtr++)=0; //在新图中,该行中共有 num 个黑点 } } else{ //垂直投影 for(x=0;x<bi.biWidth;x++){ num=0; //计数器初始化为 0 lpPtr=(char *)lpImgData+(BufSize-LineBytes)+x; for(y=0;y<bi.biHeight;y++){ if(*lpPtr!=0) num++; //计数器加 1 lpPtr-=LineBytes; } lpTempPtr=(char *)lpTempImgData+OffBits+x; for(y=0;y<num;y++){ *lpTempPtr=0; //在新图中,该列中共有 num 个黑点 lpTempPtr+=LineBytes; } } } if(hBitmap!=NULL) DeleteObject(hBitmap); hDc=GetDC(hWnd); //创立一个新的位图 hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData, (LONG)CBM_INIT, (LPSTR)lpTempImgData+ sizeof(BITMAPINFOHEADER)+ NumColors*sizeof(RGBQUAD), (LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS); //起不同的结果文件名 if(Hori) hf=_lcreat("c:\\hproject.bmp",0); else hf=_lcreat("c:\\vproject.bmp",0); _lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER)); _lwrite(hf,(LPSTR)lpTempImgData,BufSize); _lclose(hf);