當前位置:編程學習大全網 - 編程軟體 - VC編程:利用串行化打開DIB位圖

VC編程:利用串行化打開DIB位圖

我說說思想吧。具體代碼太麻煩了,抱歉。

1)如果要串行化,最好的情況是DIB這個類是從CObject類派生的子類,這樣就可以重載Serialize這個專門用來串行化的函數。如果不是CObject的子類,由於DIB是現成的類,對生手來說,改造的話比較麻煩。可以這樣,自己構造壹個類,這個類是從CObject派生出來的子類,然後將DIB作為該類的壹個成員類。

2)DIB最重要的就是DIB Section和DIB Bits這兩個部分。重載1)中提到的類已經有的Serialize,由於CArchive已經支持對BYTE的串行化,因此可以簡單把DIB Section和DIB Bits以BYTE的形式提供給CArchive。

形如:

if (ar.IsStoring()) {

//將內存中的DIB寫到文件中

PBTYE pDIBSection = (PBYTE)&myDIB->m_DIBSection;//myDIB為DIB類,m_DIBSection為DIB Section

for (int i = 0; i < sizeof(BITMAPINFOHEADER); i++) {

ar << *pDIBSection++;

}

} else {

//從文件中讀出DIB

...

}

...

大概是這樣的代碼就能把DIB Section進行串行化了。

3)妳的程序中,不知道把DIB放在哪個類裏了,假設為CDocument。重載CDocument的Serialize函數並加入需要串行化的代碼行:

myDIB.Serialize();

  • 上一篇:騰訊課堂麥克風在哪裏?怎麽關掉?
  • 下一篇:數控彈簧機有3軸、4軸、5軸和多軸等,其功能有何不同?
  • copyright 2024編程學習大全網