扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘 涛 来源:yesky 2007年11月16日
关键字:
void CDibView::OnMenuchange() file://图像转换实现函数 { // TODO: Add your command handler code here HANDLE data1handle; LPBITMAPINFOHEADER lpBi; BITMAPINFO *m_pBMI; CDibDoc *pDoc=GetDocument(); HDIB hdib; unsigned char *hData; unsigned char *data; hdib=pDoc->GetHDIB();//得到位图数据的句柄,其中包含图像信息头 BeginWaitCursor(); lpBi=(LPBITMAPINFOHEADER)GlobalLock((HGLOBAL)hdib); hData=(unsigned char*)FindDIBBits((LPSTR)lpBi); m_pBMI=new BITMAPINFO;//生成彩色图像的信息头 m_pBMI->bmiHeader.biBitCount=24; m_pBMI->bmiHeader.biClrImportant=0; m_pBMI->bmiHeader.biClrUsed=0; m_pBMI->bmiHeader.biCompression=BI_RGB; m_pBMI->bmiHeader.biHeight=lpBi->biHeight; m_pBMI->bmiHeader.biWidth=lpBi->biWidth; m_pBMI->bmiHeader.biPlanes=1; m_pBMI->bmiHeader.biSize=sizeof(BITMAPINFOHEADER); m_pBMI->bmiHeader.biXPelsPerMeter=0; m_pBMI->bmiHeader.biYPelsPerMeter=0; m_pBMI->bmiHeader.biSizeImage=WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight*3; file://data=hData; int R,G,B,i,j; data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight*3); file://生成存储彩色图象数据的缓冲区 data=(unsigned char*)GlobalLock((HGLOBAL)data1handle); for(i=0;i for(j=0;j { if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=64) {R=0; G=(int)4*(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)); B=255; } if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>64 && *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=128) {R=0; G=255; B=(int)4*(128-*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)); } if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>128 && *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=192) {R=(int)4*(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)-128); G=255; B=0; } if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>192 && *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=255) {R=255; G=(int)4*(255-*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)); B=0; } file://将生成的R、G、B分量存入目标缓冲区 *(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3)=B; *(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3+1)=G; *(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3+2)=R; } GlobalUnlock((HGLOBAL)hdib); GlobalUnlock(data1handle); EndWaitCursor(); CClientDC pDC(this); file://显示真彩色图像 StretchDIBits(pDC.GetSafeHdc(),0,0,lpBi->biWidth,lpBi->biHeight,0,0, lpBi->biWidth, lpBi->biHeight,data,m_pBMI,DIB_RGB_COLORS, SRCCOPY); delete m_pBMI; } |
图 一 |
图 二 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者