![](https://csdnimg.cn/release/download_crawler_static/87482261/bg5.jpg)
// 指向原图象和目的图象的像素的指针
LPBYTE lpSrc,lpDst;
// 指向原图像像素的指针
LPBYTE lpDIBBits;
// 指向旋转后图像(像素)的指针
LPBYTE lpNewDIBBits;
LPSTR lpNewDIB;
// 旋转后新的 DIB 句柄
HDIB hDIB;
// 循环变量
LONG i,j,i0,j0;
// 原图像每行的字节数
LONG lLineBytes;
// 旋转后图像每行的字节数 LONG lNewLineBytes;
// 旋转角度的弧度
double fArcAngle;
// 旋转角度的正弦和余弦
float fSin,fCos;
// 旋转前图象四个角的坐标(以图象中心为坐标系原点) float fSrcX1,fSrcY1,fSrcX2,fSrcY2;
float fSrcX3,fSrcY3,fSrcX4,fSrcY4;
// 旋转后图象四个角的坐标(以图象中心为坐标系原点) float fDstX1,fDstY1,fDstX2,fDstY2;
float fDstX3,fDstY3,fDstX4,fDstY4;
// 两个中间量
float f1,f2;
// 找到图象的像素位置 lpDIBBits=(LPBYTE)::FindDIBBits(lpDIB);
// 获取图象的宽度 lWidth=::DIBWidth(lpDIB);
// 获取图象的高度 lHeight=::DIBHeight(lpDIB);
// 获取图象的颜色数 wNumColors=::DIBNumColors(lpDIB);
// 获取指向原位图信息头结构的指针 lpbmi0=(LPBITMAPINFOHEADER)lpDIB;
// 计算原图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth *(lpbmi0->biBitCount)); // 将旋转角度从度转换到弧度
fArcAngle =(iAngle*PI)/180.0;
// 计算旋转角度的正弦
fSin = (float) sin(fArcAngle);
// 计算旋转角度的余弦
fCos = (float) cos(fArcAngle);
// 计算原图的四个角的坐标(以图像中心为坐标系原点) fSrcX1 = (float) (- (lWidth - 1) / 2);
fSrcY1 = (float) ( (lHeight - 1) / 2);
fSrcX2 = (float) ( (lWidth - 1) / 2);
fSrcY2 = (float) ( (lHeight - 1) / 2);
fSrcX3 = (float) (- (lWidth - 1) / 2);
fSrcY3 = (float) (- (lHeight - 1) / 2);
fSrcX4 = (float) ( (lWidth - 1) / 2);
fSrcY4 = (float) (- (lHeight - 1) / 2);