突然想寫個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];
就好了...
等等來試.....
沒有留言:
張貼留言
(什麼是留言欄訊息?)