memcpy(m_lpMeta, m_lpSrc, n_CopyByte); 将原图像中与目标图像某行相关的像素拷贝到临时数组m_lpMeta中。
*(m_lpMeta+n_CopyByte-1) &= m_BTemp; 将临时数组中对应目标图像某行最后1位后的内容清0。该操作不是必须的。
值得注意的是:在很多情况下,每行起始像素的起始位可能不是所在字节的起始位(n_StartBit不为0),这时需要对每行数据进行左移操作,以便使在目标图像中的每行起始像素的起始位都在所在字节的第一位,ArrayLeftBitMove函数即起左移作用。
进行了移位操作后,临时数组中的最后一个字节有可能变成了空字节。因此,在将临时数组拷贝到目标图像时,需根据情况决定是否拷贝最后一个字节。
4.5 GetConstBYTE函数
// 得到位操作时的常量,BYTE的前n位(从0位开始,0-7)为1,后续为0
BYTE CDib::GetConstBYTE(short n)
{
switch(n){
case 0:
return 0x80;
case 1:
return 0xC0;
case 2:
return 0xE0;
case 3:
return 0xF0;
case 4:
return 0xF8;
case 5:
return 0xFC;
case 6:
return 0xFE;
case 7:
return 0xFF;
default:
return -1;
}
|