孙鑫vc学习笔记_第11课_part4
来源:互联网 发布:ueba 网络事件 编辑:程序博客网 时间:2024/06/05 02:28
#另外两种保存图形和重绘图形的方式01:47
(1)CMetaFileDC 源文件DC
×A Windows metafile contains a sequence of graphics device interface (GDI) commands that you can replay(重放) to create a desired image or text.
×相当于一个画布。绘制的时候是看不见的,绘好之后可以播放它。
×它包含的是绘制图形的各个命令。
CDC::PlayMetaFile用来播放源文件
1#CMetaFileDC m_dcMetaFile;
2#m_dcMetaFile.Create();//参数为NULL则一个内存源文件被创建
3#把绘图时的dc都换成m_dcMetaFile
4#ONDRAW中使用close来返回一个源文件的句柄
HMETAFILE hmetaFile;
hmetaFile=m_dcMetaFile.Close();
pDC->PlayMetaFile(hmetaFile);//播放
//再次创建一个源文件
m_dcMetaFile.Create();
//在源文件dc中播放先前的源文件,从而保存了上次的操作
m_dcMetaFile.PlayMetaFile(hmetaFile);
//删除源文件资源
DeleteMetaFile(hmetaFile);
#把源文件保存到文件中
添加菜单上打开和保存的命令响应
×CopyMetaFile
void CGraphicView::OnFileSave()
{
// TODO: Add your command handler code here
HMETAFILE hmetaFile;
hmetaFile=m_dcMetaFile.Close();
CopyMetaFile(hmetaFile,"meta.wmf");//扩展名一定的吗?
m_dcMetaFile.Create();
DeleteMetaFile(hmetaFile);
}
#打开文件
GetMetaFile××××××××××
//GetEnhMetaFile
void CGraphicView::OnFileOpen()
{
// TODO: Add your command handler code here
HMETAFILE hmetaFile;
hmetaFile=GetMetaFile("meta.wmf");
m_dcMetaFile.PlayMetaFile(hmetaFile);
DeleteMetaFile(hmetaFile);
Invalidate();
}
(2)使用兼容DC
#CDC m_dcCompatible;
#先判断兼容dc是否已经创建
if(!m_dcCompatible.m_hDC)
{
m_dcCompatible.CreateCompatibleDC(&dc);
CRect rect;
GetClientRect(&rect); //客户区的大小
CBitmap bitmap;
//通过指定的宽和高来创建一个兼容位图
bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
//如果要在兼容dc上绘图必须要选入一幅位图,导入的也行
m_dcCompatible.SelectObject(&bitmap);
//m_dcCompatible.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);CreateCompatibleBitmap返回的位图对象只包含相应设备描述表中的位图的位图信息头,不包含颜色表和象素数据块。因此,选入该位图对象的设备描述表不能像选入普通位图对象的设备描述表一样应用,必须在SelectObject函数之后,调用BitBlt将原始设备描述表的颜色表及象素数据块拷贝到兼容设备描述表。
m_dcCompatible.SelectObject(pBrush);
}
同样把dc换成m_dcCompatible,由于是内存中dc,同样操作时是看不见的
OnDraw中贴图:
CRect rect;
GetClientRect(&rect);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&m_dcCompatible,0,0,SRCCOPY);
- 孙鑫vc学习笔记_第11课_part4
- 孙鑫vc学习笔记_第11课_part1
- 孙鑫vc学习笔记_第11课_part2
- 孙鑫vc学习笔记_第11课_part3
- 孙鑫vc学习笔记_第10课
- 孙鑫vc学习笔记_第一课
- 孙鑫vc学习笔记_第一课(参考)
- 孙鑫VC++视频学习笔记-第3课
- 第一天学习_笔记
- 孙鑫VC课第八节笔记
- 吴恩达机器学习笔记_第一周
- 吴恩达机器学习笔记_第四周
- Android学习笔记_《第一行代码》
- Scala的学习笔记_第一天
- 孙鑫VC++笔记_第一课_SDK编程
- TCP_IP协议详解学习笔记_卷1_第11章_UDP协议
- Android应用界面开发_学习笔记_第一周
- Android应用界面开发_学习笔记_第四周
- 孙鑫vc学习笔记_第11课_part2
- DELPHI中MessageBox的用法
- ASP.NET中导出excel/word等类型文件的简单方法
- CIO走向成功的12步计划
- 孙鑫vc学习笔记_第11课_part3
- 孙鑫vc学习笔记_第11课_part4
- 学习于丹《论语》心得
- Div+CSS布局入门教程
- .net用C#编写一个media播放器
- 12月25日——培训第31天
- Delphi中ShellExecute的妙用
- HTMLENCODE和URLENCODE的区别
- 设置tomcat5.5以上的jvm最大内存值
- 龙芯软件开发(13)--配置南桥进入调试新天地