VC++ 元文件保存矢量图形
来源:互联网 发布:番茄工作法软件 编辑:程序博客网 时间:2024/05/17 22:12
元文件的使用保存图形和重绘图形
1:元文件设备上下文CMetaFileDC类,派生于CDC
2:使用Windows元文件的步骤
1:利用CMetaFileDC类的构造函数构造一个元文件对象,然后利用该类的Create成员函数创建一个Windows设备上下文,并与之前的对象关联起来
Create()函数声明为 BOOL Create(LPCTSTR lpszFilename=null);
lpszFilename是创建的元文件的 文件名,如果参数是NULL,创建的元文件就是一个内存元件
2:在已创建的元元件DC对象中发送一系列GDI命令,如MoveTo()等
3:命令发送后,调用Close成员函数关闭元文件设备上下文,返回元文件句柄(HMETAFILE类型)。
HMETAFILE Close();
4:以得到的元文件句柄为参数,利用CDC类的PlayMetaFile成员函数播放该文件,函数声明:
BOOL PlayMetaFile(HMETAFILE hMF);
5:播放完其中的命令后就不需要该元文件了,因为元文件也是资源,需要回收释放,调用DeleteMetaFile()函数
BOOL DeleteMetaFile(HMETAFILE hMF);
实例:
m_meta.MoveTo(40,40);
m_meta.LineTo(50,90);
HMETAFILE h;
h=m_meta.Close();
m_meta.PlayMetaFile(h);
m_meta.Create();
DeleteMetaFile(h);
1、内存元文件1)创建元文件 CMetaFileDC m_dcMetaFile;2)初始化 m_dcMetaFile.Create();3)在OnLButtonUp中添加代码CClientDC dc(this);CPen pen(0,1,RGB(255,0,0));dc.SelectObject(&pen);m_dcMetaFile.SelectObject(&pen);CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));dc.SelectObject(pBrush);m_dcMetaFile.SelectObject(pBrush);switch(m_nDrawType){case 1: dc.SetPixel(point,RGB(255,0,0)); m_dcMetaFile.SetPixel(point,RGB(255,0,0)); break;case 2: dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_dcMetaFile.MoveTo(m_ptOrigin); m_dcMetaFile.LineTo(point); break;case 3: dc.Rectangle(CRect(m_ptOrigin,point)); m_dcMetaFile.Rectangle(CRect(m_ptOrigin,point)); break;case 4: dc.Ellipse(CRect(m_ptOrigin,point)); m_dcMetaFile.Ellipse(CRect(m_ptOrigin,point)); break;default: break;}4)、回放HMETAFILE hmetafile;hmetafile=m_dcMetaFile.Close();pDC->PlayMetaFile(hmetafile);m_dcMetaFile.Create();m_dcMetaFile.PlayMetaFile(hmetafile);DeleteMetaFile(hmetafile);2、本地元文件的保存与打开1)在文件/保存中添加代码HMETAFILE hmetafile;hmetafile=GetMetaFile("meta.wmf");m_dcMetaFile.PlayMetaFile(hmetafile);DeleteMetaFile(hmetafile);Invalidate();2)在文件/打开中添加代码HMETAFILE hmetafile;hmetafile=m_dcMetaFile.Close();CopyMetaFile(hmetafile,"meta.wmf");m_dcMetaFile.Create();DeleteMetaFile(hmetafile);3、兼容设备描述表CDC m_dcCompatible;OnLButtonUp中if(!m_dcCompatible.m_hDC){ m_dcCompatible.CreateCompatibleDC(&dc); CRect rect; GetClientRect(&rect); CBitmap bitmap; bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height()); m_dcCompatible.SelectObject(&bitmap); m_dcCompatible.SelectObject(pBrush); m_dcCompatible.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);}switch(m_nDrawType){case 1: dc.SetPixel(point,RGB(255,0,0)); m_dcCompatible.SetPixel(point,RGB(255,0,0)); break;case 2: dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_dcCompatible.MoveTo(m_ptOrigin); m_dcCompatible.LineTo(point); break;case 3: dc.Rectangle(CRect(m_ptOrigin,point)); m_dcCompatible.Rectangle(CRect(m_ptOrigin,point)); break;case 4: dc.Ellipse(CRect(m_ptOrigin,point)); m_dcCompatible.Ellipse(CRect(m_ptOrigin,point)); break;default: break;}OnDraw中CRect rect;GetClientRect(&rect);pDC->BitBlt(0,0,rect.Width(),rect.Height(),&m_dcCompatible,0,0,SRCCOPY);
- VC++ 元文件保存矢量图形
- C#保存EMF矢量图形文件
- SVG可缩放矢量图形文件
- 多比矢量图形控件用户手册(四)-图元
- C#调用Illustrator CS4生成系统所有字体列表并保存为AI文件(Illustrator矢量图形编程之4)
- C#调用Illustrator CS4生成系统所有字体列表并保存为AI文件(Illustrator矢量图形编程之4)
- 保存成图形文件
- 用VC实现小型矢量图形系统的开发
- 用VC实现小型矢量图形系统的开发
- VC 小型矢量图形系统开发的实现
- 孙鑫VC学习笔记:第十一讲 如何把元文件保存到文件当中
- 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
- 孙鑫VC学习笔记:第十一讲 图形重绘方法二 利用元文件
- 孙鑫VC学习笔记:第十一讲 (六) 图形重绘方法二 利用元文件
- 形状图形 路径 矢量图形
- javascript 矢量图形库
- C# 绘制矢量图形
- C# 绘制矢量图形
- Vim语法高亮设置
- Fork bomb
- 老人摔伤了,可以获得赔偿,新法?
- 设计模式之策略模式,strategy
- CentOS 6.4 + Apache 2.2.15 + Redmine 2.3.2 + backlogs 1.0.6 安装配置 [2013-12-12更新]
- VC++ 元文件保存矢量图形
- 剑灵,不得不说的话
- jboss jms开发需要用到的jar
- RS485/云台控制(PTZ)学习文档
- 为什么切换输入法时,ctrl+shift不能用的问题?
- 数据库并发的一些问题
- g is right and
- 设计模式之解释器模式,interpreter
- Yes yes yes yes yes yes