我该怎么去清除前一次的数据?
我在画图的时候,做两个不一样的图。因为都是通过擎按扭显示图片。但是我的问题是在显示第一个
图片后,第二次显示的结果还是被记录下来了。
只有通过窗口重画来消除界面的图片,我该怎么去把前次记录下来的图片清除。
还有就是我在拖动窗口大小的时候,图片会因为重画而消失。我该怎么实现?
上面的问题都是在VIEW类里面实现的,没有涉及到DOC。只在VIEW类里面实现,能否给
出具体实现的原代码!
谢谢!
问题点数:40、回复次数:2Top
1 楼ssbelle(沉默的骆驼)回复于 2006-06-02 20:04:15 得分 0
CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL); //Create MemDC
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); //Create MemBitmap
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); //Select MemBitmap into MemDC to Draw
//Draw image here
fnDrawImage(CXXImage* pImage,&MemDC);
//Paint the MemBitmap in the MemDC to pDC
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MemDC.DeleteDC();Top
2 楼xyzll32()回复于 2006-06-02 21:07:55 得分 0
我的图片不是自己用鼠标画的。是通过下面的语句实现的
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
CString path;
if(i==1)
{path="./router.bmp";}
else if(i==2)
{path="./switch.bmp";}
else if(i==3)
{path="./host2.bmp";}
if(file.Open(path,CFile::modeRead)
&&file.GetStatus(path,fstatus)
&&((cb=fstatus.m_size)!=-1))
{
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOID pvData= NULL;
if(hGlobal!=NULL)
{
if((pvData= GlobalLock(hGlobal))!=NULL)
{
file.ReadHuge(pvData,cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/
((double)pDC->GetDeviceCaps(HORZRES)*60.0);
fY=(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/
((double)pDC->GetDeviceCaps(VERTSIZE)*120.0);
if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,
0,hmHeight,hmWidth,-hmHeight,NULL)))
MessageBox("ffff");
pDC->TextOut(x,y+80,ip);
pPic->Release();
}
else
{
MessageBox("lalalal");
}
}
}
}
else
{
MessageBox("adgadg");
}
现在我要让WINDOWS重画之后不图片还是没有销毁 。
上面的语句的意思是让图片先保存在pOldBit里面。
然后在显示吧。
我也可以这样实现吗?Top





