扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘涛 来源:作者授权转载 2007年10月21日
关键字:
void CDibView::OnDKImage() { // TODO: Add your command handler code here HANDLE data1handle;//这里的内部变量与前面的含义一致、这里不再赘述; LPBITMAPINFOHEADER lpBi; CDibDoc *pDoc=GetDocument(); HDIB hdib; unsigned char *pData; unsigned char *data; hdib=pDoc->m_hDIB;//拷贝图像数据的句柄; lpBi=(LPBITMAPINFOHEADER)GlobalLock((HGLOBAL)hdib); pData=(unsigned char*)FindDIBBits((LPSTR)lpBi); pDoc->SetModifiedFlag(TRUE); data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight);//申请缓冲区; data=(unsigned char*)GlobalLock((HGLOBAL)data1handle);//得到新的缓冲去的指针; AfxGetApp()->BeginWaitCursor(); int i,j,buf; for( i=0;i<=lpBi->biHeight-2; i++)//对图像的各个像素循环进行"雕刻"处理; for( j=0;j<=lpBi->biWidth-2; j++) { buf=*(pData+(lpBi->biHeight-i)*WIDTHBYTES(lpBi->biWidth*8)+j)-*(pData+(lpBi->biHeight-i-1)*WIDTHBYTES(lpBi->biWidth*8)+j+1)+128;//“雕刻”处理; if(buf>255) buf=255; if(buf<0)buf=0; *(data+(lpBi->biHeight-i)*WIDTHBYTES(lpBi->biWidth*8)+j)=(BYTE)buf; } for( j=0; jbiHeight; j++) for( i=0; ibiWidth; i++) //重新将处理后的图像数据写入原始的图像缓冲区内; *(pData+i*WIDTHBYTES(lpBi->biWidth*8)+j)=*(data+i*WIDTHBYTES(lpBi->biWidth*8)+j); pDoc->m_hDIB =hdib//将处理过的图像数据写回pDoc中的图像缓冲区; GlobalUnlock((HGLOBAL)hdib);//解锁、释放缓冲区; GlobalUnlock((HGLOBAL)data1handle); GlobalFree((HGLOBAL)hdib); GlobalFree((HGLOBAL)data1handle); Invalidate(TRUE);//显示图像 } |
xcenter = (width+1)/2+left; ycenter = (height+1)/2+top; x1 = (x-xcenter) cosθ - (y - ycenter) sinθ+xcenter; y1 = (x-xcenter) sinθ+ (y- ycenter) cosθ+ ycenter; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者