VC++图像的旋转编程

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:56:42
大家帮我看看这段代码,关于图像旋转的,为什么无法正确显示图像呢?帮我看看啊,这是书中的一段代码。
我单步调试发现,关于坐标的转换没有问题,与预想的一样,我觉得关键在原图到新图的像素复制上出了问题

///*************************************************************//*函数名称:Xuanzhuan(int RotateAngle)
/*函数类型:void
/*参数说明:RotateAngle --旋转角度
/*功能:对图像进行旋转处理。
/*************************************************************/
void CJihebianhuanDib::Xuanzhuan(float RotateAngle)
{

LPBYTE lpTemp,lpTempPtr,lpPtr,lpSrc,temp;
float SrcX1,SrcY1,SrcX2,SrcY2;
float SrcX3,SrcY3,SrcX4,SrcY4;
float DstX1,DstY1,DstX2,DstY2;
float DstX3,DstY3,DstX4,DstY4;
DWORD x1,y1,x0,y0;
float cosa,sina;
float num1,num2;
int LineBytes;
//角度到弧度的转化
RotateAngle=(float)RADIAN(RotateAngle);
cosa=(float)cos((double)RotateAngle);
sina=(float)sin((double)Rotate

DIB中图像第一行可能保存在数据最后一行的位置
lpPtr = lpSrc + Wold * (Hold - 1 - y0) + x0;
需要检查BITMAPINFOHEADER.biHeight的符号来确定,如果是正数,就要反过来读取。