图像旋转算法.doc

图像旋转算法.doc

ID:57611740

大小:45.50 KB

页数:6页

时间:2020-08-29

图像旋转算法.doc_第1页
图像旋转算法.doc_第2页
图像旋转算法.doc_第3页
图像旋转算法.doc_第4页
图像旋转算法.doc_第5页
资源描述:

《图像旋转算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//两个常数,这样不用以后每次都计算了f1=(float)(-0.5*(lNewWidth-1)*fCosa-0.5*(lNewHeight-1)*fSina+0.5*(lWidth-1));f2=(float)(0.5*(lNewWidth-1)*fSina-0.5*(lNewHeight-1)*fCosa+0.5*(lHeight-1));//分配内存,以保存新DIBhDIB=(HDIB)::GlobalAlloc(GHND,lNewLineBytes*lNewHeight+*(LPDWORD)lpDIB+::Pa

2、letteSize(lpDIB));//判断是否内存分配失败if(hDIB==NULL){//分配内存失败returnNULL;}//锁定内存lpNewDIB=(char*)::GlobalLock((HGLOBAL)hDIB);//复制DIB信息头和调色板memcpy(lpNewDIB,lpDIB,*(LPDWORD)lpDIB+::PaletteSize(lpDIB));//找到新DIB象素起始位置lpNewDIBBits=::FindDIBBits(lpNewDIB);//获取指针lpbmi=(LPBITMAPI

3、NFOHEADER)lpNewDIB;lpbmc=(LPBITMAPCOREHEADER)lpNewDIB;//更新DIB中图像的高度和宽度if(IS_WIN30_DIB(lpNewDIB)){//对于Windows3.0DIBlpbmi->biWidth=lNewWidth;lpbmi->biHeight=lNewHeight;}else{//对于其它格式的DIBlpbmc->bcWidth=(unsignedshort)lNewWidth;lpbmc->bcHeight=(unsignedshort)lNewHei

4、ght;}//针对图像每行进行操作for(i=0;i

5、float)j)*fCosa+((float)i)*fSina+f1+0.5);//判断是否在源图范围内if((j0>=0)&&(j0=0)&&(i0

6、hDIB;}//顺时针旋转voidCMyDIPView::OnMenuitem32778(){//图像旋转//获取文档CMyDIPDoc*pDoc=GetDocument();//指向DIB的指针LPSTRlpDIB;//锁定DIBlpDIB=(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB());//判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的旋转,其它的可以类推)if(::DIBNumColors(lpDIB)!=256){//提示用户MessageBox("目

7、前只支持256色位图的旋转!","系统提示",MB_ICONINFORMATION

8、MB_OK);//解除锁定::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());//返回return;}//旋转角度intiRotateAngle;iRotateAngle=15;//创建新DIBHDIBhNewDIB=NULL;//更改光标形状BeginWaitCursor();//调用RotateDIB()函数旋转DIBhNewDIB=(HDIB)RotateDIB(lpDIB,iRotateAngle)

9、;//判断旋转是否成功if(hNewDIB!=NULL){//替换DIB,同时释放旧DIB对象pDoc->ReplaceHDIB(hNewDIB);//更新DIB大小和调色板pDoc->InitDIBData();//设置脏标记pDoc->SetModifiedFlag(TRUE);//重新设置滚动视图大小SetScrollSiz

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。