今天用MFC做图像旋转的时候,图像旋转后出现了像素不能完整填充问题,问题如下图
//通过变换前像素点坐标计算新像素坐标
// x坐标为 jcols y坐标为irows
x1=jcols*cos(a2r(crotate.m_angle))-irows*sin(a2r(crotate.m_angle));
y1=jcols*sin(a2r(crotate.m_angle))+irows*cos(a2r(crotate.m_angle));
具体问题在于:在计算像素点旋转后坐标时,将取整后的数赋给旋转后的坐标,由于取整为向下取整,所以会跳过部分的像素点,直接给下一个像素点进行赋值。
解决办法:赋值时进行两次赋值,直接对跳过的像素点赋值,即可改正
*(m_pData)=pNewImgData[i];
*(m_pData+1)=pNewImgData[i+1];
改正后的图片正常显示