/*
序列化:将图形以文件的形式保存起来
*/
void CGragh::SetGraghToFile(CString strFileName)
{
FILE* pFile = _tfopen(strFileName.GetBuffer(0), _T("w+b"));
if(NULL==pFile) return;
int nCount = vecBihua.size();
fwrite((void*)&nCount, sizeof(int), sizeof(int), pFile);
for(int i=0; i<nCount; i++)
{
BIHUA bihua = vecBihua.at(i);
int nPtCount = bihua.size();
fwrite((void*)&nPtCount, sizeof(int), sizeof(int), pFile);
if(nPtCount>0)
{
for(int j=0; j<nPtCount; j++)
{
CPoint ptMove = bihua.at(j);
fwrite((void*)&ptMove.x, sizeof(ptMove.x), sizeof(ptMove.x), pFile);
fwrite((void*)&ptMove.y, sizeof(ptMove.y), sizeof(ptMove.y), pFile);
}
}
}
fclose(pFile);
}
/************************************************************************/
/* 反序列化:从文件里面读出内容到内存中绘制 */
/************************************************************************/
void CGragh::GetGraghFromFile(CString strFileName)
{
vecBihua.clear();
FILE* pFile = _tfopen(strFileName.GetBuffer(0), _T("rb"));
if(NULL==pFile) return;
int nCount = 0;
fread((void*)&nCount, sizeof(int), sizeof(int), pFile);
for(int i=0; i<nCount; i++)
{
BIHUA bihua;
int nPtCount = 0;
fread((void*)&nPtCount, sizeof(int), sizeof(int), pFile);
if(nPtCount>0)
{
for(int j=0; j<nPtCount; j++)
{
CPoint ptMove;
fread((void*)&ptMove.x, sizeof(ptMove.x),sizeof(ptMove.x), pFile);
fread((void*)&ptMove.y, sizeof(ptMove.y),sizeof(ptMove.y), pFile);
bihua.push_back(ptMove);
}
}
AddBihua(bihua);
}
fclose(pFile);
}