社区
图形处理/算法
帖子详情
如何将vc程序中窗口,或试图的一部分保存到bmp文件中去
myazhe
2003-08-20 11:15:22
我用vc载试图,或窗口中的一个位置画了一个图形,请问怎么讲这个图形保存到bmp文件中去
...全文
28
2
打赏
收藏
如何将vc程序中窗口,或试图的一部分保存到bmp文件中去
我用vc载试图,或窗口中的一个位置画了一个图形,请问怎么讲这个图形保存到bmp文件中去
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
masterz
2003-08-20
打赏
举报
回复
with the IPicture interface, it is pretty easy
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");
}
zyk100
2003-08-20
打赏
举报
回复
如果只保存客户区里面的内容那就太简单了,你只需要把视图里面的图形COPY到内存CDC就ok了
CClientDC dc(this);
CDC mmdc;
mmdc.CreateCompatibleDC(&dc);
mmdc.BitBlt(0,0,BMP.bmWidth,BMP.bmHeight,pDC,0,0,SRCCOPY);
CBitmap *bmp=mmdc.GetObject();
VC
常见问题百问~确定应用
程序
的路径~~如何在对话框
中
显示一个位图?~~
窗口
重绘
VC
常见问题百问(1) 如何通过代码获得应用
程序
主
窗口
的 指针?主
窗口
的 指针
保存
在CWinThread::m_pMainWnd
中
,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使
程序
最大化. (2) 确定...
VC
如何在
VC
5
中
控制工具条的停靠位置
2005-09-01如何在
VC
5
中
控制工具条的停靠位置 - [
VC
专栏]作者:宋立波 在
VC
5
中
开发大型应用
程序
时,工具条通常是
程序
中
必不可少的重要功能因素, 其
中
工具条在整个
窗口
中
的停靠位置尤其关键,它直接影响到
程序
界面的...
VC
中
常见功能函数汇总
主
窗口
的指针
保存
在CWinThread::m_pMainWnd
中
,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使
程序
最大化.(2)确定应用
程序
的路径Use GetModuleFileName 获得应用
程序
的路径,...
VC
10
如何在
VC
5
中
控制工具条的停靠位置 - [
VC
专栏]作者:宋立波 在
VC
5
中
开发大型应用
程序
时,工具条通常是
程序
中
必不可少的重要功能因素, 其
中
工具条在整个
窗口
中
的停靠位置尤其关键,它直接影响到
程序
界面的外观形 象...
dls显示一张
BMP
位图。
.1:准备工作。 找一张*.
bmp
格式的图片。我在例子
中
将使用640*480大小的图片。如果你在windows下面,你可以打开画图
程序
自己简单的...然后将图片名字修改为helloworld.
bmp
(当然,你也可以在
程序
的相应部分修改
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章