代码为两个创建CreateImageHeader:imageSo和imageDe, 然后通过扫描线对imagedata进行估值, 然后通过判断角度旋转, 然后通过imagedata评估scanline,
我将主要代码显示为我所说的背后,希望有人能给我建议或思考。
创建:
imageSo = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
imageDe = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
转移:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit2,bit1,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
旋转:
if(param.Angle){
double xshift=0;
double yshift=0;
iiplGetRotateShift(bmp->Width/2,bmp->Height/2,BmpProperty.Angle,&xshift,&yshift);
iiplRotate(imageSo,imageDe,BmpProperty.Angle,xshift,yshift,IPL_INTER_CUBIC|IPL_SMOOTH_EDGE);
}
shift2:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit1,bit2,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
答案 0 :(得分:0)
我现在知道原因,因为在旋转之后,画布也在旋转,所以我将画布设置为一个前面是矩形的正方形。另外理解画布中的图片位置也会有所帮助。
这里是介绍画布旋转细节的网站。 enter link description here