在VB6中使用API函数实现矢量图的绘制在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() With lprect'设置RECT结构成员主要用于定义了在哪里描绘图元文件 .Left = 0 End Sub |
|