0

代码是为两个:imageSo和imageDe创建CreateImageHeader,然后通过scanline对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);  
}  

班次2:

bit1=(BYTE*) bmp->ScanLine[hSrc-1];  
bit2=imageSo->imageData;  
for(int i=0;i < hSrc;i++)   
{  
    memcpy(bit1,bit2,cpy);  
    bit1+=wBmp;  
    bit2+=wIpl;  
}   
4

1 回答 1

0

我现在知道原因了,因为旋转后画布也在旋转,所以我将画布设置为之前是矩形的正方形。了解画布中的图片位置也会有所帮助。

这是介绍画布旋转细节的网站。 在此处输入链接描述

于 2017-08-30T03:34:19.263 回答