图片旋转任意角度.doc

图片旋转任意角度.doc

ID:57651321

大小:38.00 KB

页数:6页

时间:2020-08-30

图片旋转任意角度.doc_第1页
图片旋转任意角度.doc_第2页
图片旋转任意角度.doc_第3页
图片旋转任意角度.doc_第4页
图片旋转任意角度.doc_第5页
资源描述:

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

1、MFC中BMP图片旋转任意角度、用于绘制模拟时钟表针filepath为图片路径,angle为旋转角度。旋转以pCenter为中心进行旋转,并且pCenter将位于图片中心用于绘制模拟时钟表针voidCXXXXX::DrawBmp(CDC*pDC,CStringfilepath,doubleangle){ doubleSrcWidth=0;//图片宽度doubleSrcHeight=0;//图片高度 CFile file;        //用于读取BMP文件 BITMAPFILEHEADER bfhHeade

2、r;//bmp文件头 BITMAPINFOHEADER bmiHeader; //bmp格式头   LPBITMAPINFO lpBitmapInfo;    //bmp格式具体信息  if(!file.Open(filepath,CFile::modeRead)) return;                              //打开文件 file.Read(&bfhHeader,sizeof(BITMAPFILEHEADER));//读取文件头 if(bfhHeader.bfType!=0x4

3、d42)          //判断是否是BM return; if(bfhHeader.bfSize!=file.GetLength()) return;  if(file.Read((LPSTR)&bmiHeader,sizeof(bmiHeader))!=sizeof(bmiHeader)) return; SrcHeight = bmiHeader.biHeight;//得到高度和宽度 SrcWidth  = bmiHeader.biWidth; file.SeekToBegin(); file.Re

4、ad(&bfhHeader,sizeof(BITMAPFILEHEADER));  UINT uBmpInfoLen=(UINT) bfhHeader.bfOffBits-sizeof(BITMAPFILEHEADER); lpBitmapInfo=(LPBITMAPINFO) new BYTE[uBmpInfoLen]; file.Read((LPVOID) lpBitmapInfo,uBmpInfoLen); if((* (LPDWORD)(lpBitmapInfo))!=sizeof(BITMAPINF

5、OHEADER)) return; DWORD dwBitlen=bfhHeader.bfSize - bfhHeader.bfOffBits; LPVOID lpSrcBits=new BYTE[dwBitlen];//将数据读入lpSrcBits数组 file.Read(lpSrcBits,dwBitlen); file.Close();//关闭文件   CDCbmpDC;bmpDC.CreateCompatibleDC(pDC);CBitmapbmp;bmp.CreateCompatibleBitmap

6、(pDC,SrcWidth,SrcHeight);bmpDC.SelectObject(&bmp); StretchDIBits(bmpDC.m_hDC,0,0,SrcWidth,SrcHeight,0,0,bmiHeader.biWidth,bmiHeader.biHeight,lpSrcBits,lpBitmapInfo,DIB_RGB_COLORS,MERGECOPY); //StretchDIBits不能去掉。将图片贴到bmpDC中  doublex1,x2,x3; doubley1,y2,y3; d

7、oublemaxWidth,maxHeight,minWidth,minHeight; doublesrcX,srcY; doublesinA,cosA; doubleDstWidth; doubleDstHeight;  angle=angle/180.0*3.14159265;sinA=sin(angle); cosA=cos(angle);  x1=SrcWidth*cosA;y1=SrcWidth*sinA;x2=SrcWidth*cosA-SrcHeight*sinA;y2=SrcWidth*sin

8、A+SrcHeight*cosA;x3=-SrcHeight*sinA;y3=SrcHeight *cosA;minWidth=x3>(x1>x2?x2:x1)?(x1>x2?x2:x1):x3; minWidth=minWidth>0?0:minWidth;  minHeight=y3>(y1>y2?y2:y1)?(y1>y2?y2:y1):y3; minHeight=minHeight>0?0:

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

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

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