汤懿 汤懿
关注数: 196 粉丝数: 27 发帖数: 47 关注贴吧数: 20
求助!谁能解释下这段程序代码~谢了 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!");       } }
【求助!】 谁能解释下这段代码 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!");      } }
1 下一页