【求助!】 谁能解释下这段代码
mfc吧
全部回复
仅看楼主
level 1
汤懿 楼主
height=GetHeight();//图像高
     wide=GetWidth();//图像宽,
     stop=0;
     counter=0;
     p_temp=new BYTE[wide*height];//开辟一个临时内存区
     memset(p_temp,255,wide*height);//置白
    
     //从左到右、从上到下标号
     const int T=5;//T为阈值,RGB值小于该阈值被认为是黑,
     for(i=0; i<wide; i++)//将第零行置白
         *(m_pData+(height-1)*wide+i)=255;
     for(j=0;j<height;j++)//将第零列置白
         *(m_pData+(height-j-1)*wide)=255;
这里的零行置白和零列置白到底怎么算的啊?
(height-1)*wide+i   是什么意思啊?
为什么不是用数组矩阵呢?
是和x-y坐标轴类似的排列吗?但是,为什么不是(height-1)*(wide+i )呢?看不懂
高手指点啊!!!
感谢了
这个是图片的导入程序:
void CDib::LoadFile(const char* dibFileName)
{
    strcpy(m_fileName,dibFileName);
     CFile dibFile(m_fileName, CFile::modeRead);
     dibFile.Read((void*)&bitmapFileHeader,sizeof(BITMAPFILEHEADER));
     if (bitmapFileHeader.bfType == 0x4d42)
     {
         DWORD fileLength = dibFile.GetLength();    
          size = fileLength -sizeof(BITMAPFILEHEADER);
          pDib =(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE, size);
         dibFile.Read((void*)pDib, size);
         dibFile.Close();
         m_pBitmapInfo = (BITMAPINFO*) pDib;
         m_pBitmapInfoHeader = (BITMAPINFOHEADER*) pDib;
         m_pRGB = (RGBQUAD*)(pDib +
             m_pBitmapInfoHeader->biSize);
         int m_numberOfColors = GetNumberOfColors();
         if (m_pBitmapInfoHeader->biClrUsed == 0)
             m_pBitmapInfoHeader->biClrUsed =
                 m_numberOfColors;
         DWORD colorTableSize = m_numberOfColors *
             sizeof(RGBQUAD);
         m_pData = pDib + m_pBitmapInfoHeader->biSize
             + colorTableSize;
         if (m_pRGB == (RGBQUAD*)m_pData) // No color table
             m_pRGB = NULL;
         m_pBitmapInfoHeader->biSizeImage = GetSize();
         m_valid = TRUE;
     }    
     else
     {
         m_valid = FALSE;
         AfxMessageBox("This isn't a bitmap file!");
     }
}

2011年03月19日 02点03分 1
level 1
m_pData+(height-1)*wide-->0行地址起始(i=0) 0行地址起始的第1位(i=1) 第二位(i=2)...
m_pData+(height-2)*wide-->1行地址起始
...
pData+(height-j-1)*wide j=0时候也是表示0行起始地址 j=1时表示1行起始地址 所有的行的起始地址的值都设为255 那么其实就是第0列的值设为255

2011年03月19日 16点03分 2
level 1
楼上的朋友,能不能帮我看个图像处理的程序,我的QQ:541405642
2011年03月20日 15点03分 3
level 2
*(m_pData+(height-1)*wide+i)是通过指针遍历,内存的。
跟数组矩阵一个样。
2011年03月22日 08点03分 4
1