打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在VB6中使用API函数实现矢量图的绘制

在VB6中使用API函数实现矢量图的绘制

分类: VB6 附庸风雅70人阅读评论(0)收藏举报

在VB6中绘制矢量图并没有想象中那么困难,其实只要使用一个增强型图元文件(EMF文件)并配合3个API函数就可以实现矢量图的绘制。上述的API函数分别是GetEnhMetaFile、GetEnhMetaFileHeader、PlayEnhMetaFile。

以下是上述函数的原型:

(1)Declare Function GetEnhMetaFile Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal lpszMetaFile As String) As Long

说明:取得磁盘文件中包含的一个增强型图元文件的图元文件句柄

参数表:

lpszMetaFile --- String,包含了增强型图元文件的一个磁盘文件的名字

返回值:Long,指向图元文件的句柄。零表示出错

(2)Declare Function GetEnhMetaFileHeader Lib "gdi32" Alias "GetEnhMetaFileHeader" (ByVal hemf As Long, ByVal cbBuffer As Long, lpemh As ENHMETAHEADER) As Long

说明:取得增强型图元文件的图元文件头

参数表:hemf ----------- Long,指向一个增强型图元文件的句柄

cbBuffer ------- Long,ENHMETAHEADER结构的大小

lpemh ---------- ENHMETAHEADER

(3)Declare Function PlayEnhMetaFile Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, lpRect As RECT) As Long

说明:在指定的设备场景中画一个增强型图元文件。与标准图元文件不同,完成回放后,增强型图元文件会恢复设备场景以前的状态

返回值:Long,非零表示成功,零表示失败。会设置GetLastError

参数表:参数 类型及说明   hdc Long,目标设备场景

hemf Long,欲描绘的增强型图元文件的句柄

lpRect RECT,一个约束矩形,定义了在哪里描绘图元文件

以下是使用以上函数实现矢量图绘制的主要代码,另外需要说明的是上述函数只对增强型图元(EMF)有效,并不支持(WMF)。

Private Sub Form_Activate()
Picture1.Cls'清除图形
Dim ret
If Dir(App.Path & "/map.emf") <> "" Then'判断文件是否存在
hwd = GetEnhMetaFile(App.Path & "/map.emf")'获取图元文件句柄
GetEnhMetaFileHeader hwd, Len(lp), lp'获取图元文件头,主要目的是获取结构中有关图元文件坐标的信息

With lprect'设置RECT结构成员主要用于定义了在哪里描绘图元文件

.Left = 0
.Top = 0
.Right = lp.rclBounds.Right
.Bottom = lp.rclBounds.Bottom
End With
ret = PlayEnhMetaFile(Picture1.hdc, hwd, lprect)'绘制绘图元文件
P = 1
Check1.value = 0
first
Else
MsgBox "缺失地图文件map.emf"
End
End If

End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel-VBA操作文件四大方法之四(2)
VB中利用Windows API实现文件操作,VB教程,VB案例,VB实例
VB中如何改变文件关联!
Delphi内存映射函数
什么是API
SendMessage函数的常用消息及其应用大全
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服