社区
图形处理/算法
帖子详情
想保存视图,不保存对话框
xxddgg
2007-04-27 02:05:33
对话框常驻视图之上,想保存视图为BMP,但不保存对话框,请指教.
...全文
243
5
打赏
收藏
想保存视图,不保存对话框
对话框常驻视图之上,想保存视图为BMP,但不保存对话框,请指教.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xxddgg
2007-12-25
打赏
举报
回复
我的图是动态的,用其他方法了,谢谢
lincy0000
2007-12-22
打赏
举报
回复
如果你是用截图方法来截获客户区的,想把对话框去掉很难,你可以在对话框出现之前截图,或截图之前销毁对话框,如果必须在有对话框的时候截图,你可以采用一楼的方法,在对话框出现之前截图,把图片放在一个内存DC中就行了
CClientDC dc(this);与当前窗口的设备上下文
CDC MemDC; //定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(&dc);
//建立一个与屏幕显示兼容的位图,位图的大小用窗口的大小
MemBitmap.CreateCompatibleBitmap(&dc,cx,cy); //cx,cy为图片大小,可以设置为你要截区域的大小
//将位图选入到内存显示设备中
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.m.BitBlt(0,0,nx,ny,&dc,0,0,SRCCOPY); //把你要保存的部分放到兼容DC中
这时MemBitmap中就是你要保存的图片
//绘图
MemBitmap不就是你要的位图吗?
//将内存中的图拷贝到屏幕上进行显示
pDC-> BitBlt(0,0,sz.cx,sz.cy,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
xxddgg
2007-05-17
打赏
举报
回复
如果客户区上有一小对话框,将被抓住,我想不要它
qqwwing
2007-04-27
打赏
举报
回复
保存视图客户区
void CXXXView::SaveToBmp()
{
BITMAPINFO bi;//信息头
void *pBits=NULL;
CRect rect;//客户区窗口
GetClientRect(&rect);
int nWidth=rect.right;
int nHeight=rect.bottom;
//填充信息头
ZeroMemory(&bi,sizeof(bi));
bi.bmiHeader.biSize=sizeof(bi.bmiHeader);
bi.bmiHeader.biHeight=nHeight;
bi.bmiHeader.biWidth=nWidth;
bi.bmiHeader.biPlanes=1;
bi.bmiHeader.biBitCount=24;
bi.bmiHeader.biCompression=BI_RGB;
bi.bmiHeader.biSizeImage=3*nWidth*nHeight;
//拷贝客户区至内存DC
HDC hActiveDC=::GetDC(this->m_hWnd);
HDC hActiveWndCompatibleDC=CreateCompatibleDC(hActiveDC);
HBITMAP hActiveWndCompactibleBitmap=CreateCompatibleBitmap(hActiveDC,rect.right,rect.bottom);
SelectObject(hActiveWndCompatibleDC,hActiveWndCompactibleBitmap);
BitBlt(hActiveWndCompatibleDC,0,0,rect.right,rect.bottom,hActiveDC,0,0,SRCCOPY);
//保存内存DC
HDC hBmpFileDC=CreateCompatibleDC(hActiveWndCompatibleDC);
HBITMAP hBmpFileBitmap=CreateDIBSection(hActiveWndCompatibleDC,&bi,DIB_RGB_COLORS,&pBits,NULL,0);
SelectObject(hBmpFileDC,hBmpFileBitmap);
BitBlt(hBmpFileDC,0,0,nWidth,nHeight,hActiveWndCompatibleDC,0,0,SRCCOPY);
CString tempFileName=_T("test.bmp");//目标文件名
CFileDialog dlg(FALSE, _T("bmp"), _T("Temp.bmp"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Bitmap Files (*.bmp)|*.bmp|All Files (*.*)|*.*||"), this);
if(dlg.DoModal() == IDOK)
{
tempFileName=dlg.GetPathName();
}
HANDLE hFile=CreateFile(tempFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{
DWORD dwRet=0;
//填充文件头
BITMAPFILEHEADER bmfHeader;
ZeroMemory(&bmfHeader,sizeof(bmfHeader));
bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits;
bmfHeader.bfType='MB';
WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL);
WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL);
WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL);
CloseHandle(hFile);
}
}
jinjinandpp
2007-04-27
打赏
举报
回复
双缓冲技术:
CDC MemDC; //定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//建立一个与屏幕显示兼容的位图,位图的大小用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,sz.cx,sz.cy);
//将位图选入到内存显示设备中
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//用背景色将位图清除干净
MemDC.FillSolidRect(0,0,sz.cx,sz.cy,RGB(255,255,255));
//绘图
MemDC.Move(0,0);
MemDC.LineTo(300,300);
MemBitmap不就是你要的位图吗?
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,sz.cx,sz.cy,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}
用户模态
对话框
内子
视图
(子窗口)的预览和打印(之二)
利用这些关联信息创建一个单文档模板,利用此单文档模板创建框架窗口,并在其内嵌
视图
(CViewPrintPreview类)中
保存
原主框架(CMainFrame)、用户
对话框
和其上需要打印的
视图
(CTestView)。然后基于...
mvvm-dialogs:框架简化了在WPF或UWP中使用MVVM时从
视图
模型打开
对话框
的概念
MVVM
对话框
框架简化了在WPF或UWP中使用MVVM时从
视图
模型打开
对话框
的概念。...
保存
文件
对话框
文件夹浏览器
对话框
该框架内置了对UWP中以下
对话框
的支持: 内容
对话框
消息
对话框
单文件选择器 多
MySQL
视图
#
视图
的概念
保存
在数据库中的查询语句 # 创建
视图
的目的 隐藏数据复杂性、实现数据访问安全、友好界面 #
视图
的操作 创建、查看、修改、更新、删除等等 -----------------------------------------...
C++ QA 专栏:列表
视图
模式,SetForegroundWindow 及类保护VC源代码
是否有一种办法能在打开/
保存
对话框
启动时改变列表
视图
的类型?启动时默认的是列表
视图
, 这个
视图
没什么用。我希望程序启动
对话框
时采用详细资料
视图
,或最好是用户最后一次使用的
视图
。您能推荐一种方法吗? ...
关于MFC文件打开
对话框
与
保存
对话框
,打开文件夹的整理
在windows 系统下常常可以看到文件的打开,另存为,文件夹打开等
对话框
,本次将会整理这些方法。常见的打开文件
对话框
方法有两种:CFileDialog和OPENFILENAMEA,前者是文件
对话框
类,后者是一个结构体;前者需要加入...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章