1.9w+
社区成员
BYTE * CDIB::DibAddress(int x,int y) //取像素数据存储地址
{
BYTE * lp;
int le;
int yy;
if(bitCount<8) //检查像素为数,只处理8位以上
{AfxMessageBox("本程序只处理 8 位以上的图像"); return 0;}
if((x<0) || (y<0) || (x>=(int)wid) || (y>=(int)hei)) //检查参数是否超出范围
{AfxMessageBox("参数超出范围");return 0;}
le=(int)bpl * yy + bpp * x; //计算偏移的位置
lp=(BYTE *) lpPixel + le; //加上像素区域首地址
AfxMessageBox("2222");
return lp;
}
DWORD CDIB::pixel(int x,int y,DWORD c) //前提条件:x,y是像素列和行,c为0xffffffff时取,否则存
//执行结果:存入像素或取出像素
{
BYTE * lp;
DWORD dd=0;
lp = DibAddress (x,y);
if(lp =NULL) return 0;
if(c == 0xffffffff)
{
AfxMessageBox("3333");
memcpy(&dd,lp,bpp); //取像素数据 这里内存不能为读
}
else
{
AfxMessageBox("4444");
memcpy(lp,&c,bpp); //存像素数据内存不能为写[color=#FF0000][/color
}
return dd;
}
BYTE * CDIB::DibAddress(int x,int y) //取像素数据存储地址
{
BYTE * lp;
DWORD le;
int yy;
if(bitCount<8) //检查像素为数,只处理8位以上
{AfxMessageBox("本程序只处理 8 位以上的图像"); return 0;}
if((x<0) || (y<0) || (x>=(int)wid) || (y>=(int)hei)) //检查参数是否超出范围
{AfxMessageBox("参数超出范围");return 0;}
yy=hei -1-y; //调整y坐标
le=(DWORD)bpl * yy + bpp * x; //计算偏移的位置
lp=(BYTE *) lpPixel + le; //加上像素区域首地址
AfxMessageBox("2222");
return lp;
}