我的一个图片的大小可能就是10*10的像素,要旋转45度的话,里面的点的转化怎么办,
f1 = (float) (-0.5 * tempw * cosa - 0.5 * temph * sina + 0.5 * (sibmcpy.cx/m_nZoom ));
f2 = (float) ( 0.5 * tempw * sina - 0.5 * temph * cosa + 0.5 * (sibmcpy.cy/m_nZoom ));
x1=(((float) j) * cosa + ((float) i) * sina + f1)*m_nZoom;
y1=(-((float) j) * sina + ((float) i) * cosa + f2)*m_nZoom;
转的时候会出现少点,多点的情况,又不能用双线性插值算法来估算像素值,我的图像是不可以多出其他的像素的,tempw,temph是新的长和高,sibmcpy是以前的图片大小,m_nZoom是倍数,这里就看成1好了,我的多转几次的话到了后来就是点很乱了,要是转了8次还想和以前的一样,怎么办~????

解决方案 »

  1.   

    应该是公式有问题,仔细看看仿射变换;
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=202254
      

  2.   

    看来这个问题很难搞点啊,我看过Photoshop,它的要是几个像素在转的话也会乱掉的,还会出来新的颜色~苦闷啊~
      

  3.   

    将图片呈45度旋转显示很容易,在GDI+中设置变换矩阵就可以了。如果要保存旋转的结果到图片,那获得绘图dc的图像就可以了