如何把CView中画的图存成一个bmp,就好像windows的抓图 行么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 with the IPicture interface, it is pretty easyvoid SaveBmp(HBITMAP hbmp, LPCTSTR sIconFileName){ if(hbmp==NULL || sIconFileName==NULL) return; //warning: this code snippet is not bullet proof. //do error check by yourself [masterz] PICTDESC picdesc; picdesc.cbSizeofstruct = sizeof(PICTDESC); picdesc.picType = PICTYPE_BITMAP ; picdesc.bmp.hpal = NULL; picdesc.bmp.hbitmap = hbmp; IPicture* pPicture=NULL; OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture); LPSTREAM pStream; CreateStreamOnHGlobal(NULL,TRUE,&pStream); LONG size; HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size); char pathbuf[1024]; strcpy(pathbuf,sIconFileName); CFile iconfile; iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite); LARGE_INTEGER li; li.HighPart =0; li.LowPart =0; ULARGE_INTEGER ulnewpos; pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos); ULONG uReadCount = 1; while(uReadCount>0) { pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount); if(uReadCount>0) iconfile.Write(pathbuf,uReadCount); } pStream->Release(); iconfile.Close();}void CsaveviewView::OnSaveview(){ CClientDC dc(this); CDC dcmem; dcmem.CreateCompatibleDC(&dc); CBitmap bmp; CRect rc; GetClientRect(&rc); bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height()); dcmem.SelectObject(&bmp); dcmem.BitBlt(0,0,rc.Width(),rc.Height(),&dc,0,0,SRCCOPY); SaveBmp(bmp,"c:\\a.bmp");} 关于皮肤问题 我想把一个CRgn对象沿周围向内缩小一个像素,怎么做?是个平行四边形。谢谢! 怎么用CxImage库打开和显示图像 一个简单的怪问题 帮忙,为什么我的程序,改成静态连接,在程序里,socket创建就出现异常,动态连接就没有问题呢? 100分!全给第一个让我明白的人 基于MFC的对话框中,弹出的模式对话框如何相对于主对话框居中? ClassXP的编译问题(急!) 请教? 问一个自动让客户端离线的问题 VC中如何彻底删除一个类啊。 工作者线程在主程序退出时,需要作哪些清理工作?
void SaveBmp(HBITMAP hbmp, LPCTSTR sIconFileName)
{
if(hbmp==NULL || sIconFileName==NULL)
return;
//warning: this code snippet is not bullet proof.
//do error check by yourself [masterz]
PICTDESC picdesc;
picdesc.cbSizeofstruct = sizeof(PICTDESC);
picdesc.picType = PICTYPE_BITMAP ;
picdesc.bmp.hpal = NULL;
picdesc.bmp.hbitmap = hbmp;
IPicture* pPicture=NULL;
OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture);
LPSTREAM pStream;
CreateStreamOnHGlobal(NULL,TRUE,&pStream);
LONG size;
HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size);
char pathbuf[1024];
strcpy(pathbuf,sIconFileName);
CFile iconfile;
iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite);
LARGE_INTEGER li;
li.HighPart =0;
li.LowPart =0;
ULARGE_INTEGER ulnewpos;
pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos);
ULONG uReadCount = 1;
while(uReadCount>0)
{ pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount);
if(uReadCount>0)
iconfile.Write(pathbuf,uReadCount);
}
pStream->Release();
iconfile.Close();
}void CsaveviewView::OnSaveview()
{
CClientDC dc(this);
CDC dcmem;
dcmem.CreateCompatibleDC(&dc);
CBitmap bmp;
CRect rc;
GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
dcmem.SelectObject(&bmp);
dcmem.BitBlt(0,0,rc.Width(),rc.Height(),&dc,0,0,SRCCOPY);
SaveBmp(bmp,"c:\\a.bmp");
}