阅读背景:

vc对图像进行平移,转置等几何变换

来源:互联网 
//平移变换
void GeometryTrans::Move(int offsetX, int offsetY)
{
	if (m_pImgDataOut!=NULL)
	{
		delete []m_pImgDataOut;
		m_pImgDataOut=NULL;
	}
	m_nBitCountOut=m_nBitCount;
	m_nColorTableLengthOut=ComputeColorTableLength(m_nBitCountOut);

	if (m_nColorTableLengthOut)
	{
		m_lpColorTableOut=new RGBQUAD[m_nColorTableLengthOut];
		memcpy(m_lpColorTableOut,m_lpColorTable,
			sizeof(RGBQUAD)*m_nColorTableLengthOut);
	}

	m_imgWidthOut=m_imgWidth;
	m_imgHeightOut=m_imgHeight;

	int lineByte=(m_imgWidth*m_nBitCount/8+3)/4*4;

	m_pImgDataOut=new unsigned char[lineByte*m_imgHeight];
	memset(m_pImgDataOut, 0, lineByte*m_imgHeight);

	int i,j;
	int k;
	int pixelByte=m_nBitCountOut/8;

	for (i=0; i<m_imgHeight; i++)
	{
		for (j=0; j<m_imgWidth; j++)
		{
			if (i-offsetY>=0&&i-offsetY<m_imgHeight
				&&j-offsetX>=0&&j-offsetX<m_imgWidth)
			{
				for (k=0; k<pixelByte; k++)
				{
					*(m_pImgDataOut+lineByte*i+j*pixelByte+k)
						=*(m_pImgData+(i-offsetY)*lineByte+(j-offsetX)*pixelByte+k);
				}
			}
		}
	}
}void GeometryTrans::Move(int offsetX, 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: