RawReader by MFC

突然想寫個RawReader讀取*.raw檔
就來用學很久的MFC寫一個,完成研究所原本想做的事吧?!



用VC++6建立一個Single Document



CRAWReaderView 的class中宣告

CStdioFile RawFile;
unsigned char RawBuf[276][235][3];

並且在下面的位置加入程式碼




void CRAWReaderView::OnDraw(CDC* pDC)
{
    CRAWReaderDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CString FilePath;
    FilePath.Format("276x3x235.raw");
    if (!RawFile.Open(FilePath, CFile::modeRead | CFile::typeBinary))
        AfxMessageBox("檔案開啟失敗");
    
    for (int pY = 0; pY<235 ; ++pY)
    for (int pX = 0; pX<276 ; ++pX)
    for (int k  = 0;  k<3   ; ++k)
        RawBuf[pY][pX][k] = 0;


    if (!RawFile.Read(RawBuf, 276*235*3))
        AfxMessageBox("讀檔失敗");
    RawFile.Close();


    for (pY = 0; pY < 235 ; ++pY)
    for (pX = 0; pX < 276 + pY * 41 ; ++pX)
            pDC->SetPixelV((pX - pY * 41), pY, RGB(RawBuf[pY][pX][0], RawBuf[pY][pX][1], RawBuf[pY][pX][2]));
}


這個程式還沒有很好,因為紅色字的部份算是不正常的部份!
不知道code裡面有沒有什麼bug




找到了!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.98.237
→ zetab:RawBuf的index超過你宣告的範圍了                           01/20 19:08

unsigned char RawBuf[276][235][3];
變成
unsigned char RawBuf[235][276][3];
就好了...
等等來試.....

沒有留言:

張貼留言

(什麼是留言欄訊息?)