在VB6中使用API函數(shù)實(shí)現(xiàn)矢量圖的繪制在VB6中繪制矢量圖并沒(méi)有想象中那么困難,其實(shí)只要使用一個(gè)增強(qiáng)型圖元文件(EMF文件)并配合3個(gè)API函數(shù)就可以實(shí)現(xiàn)矢量圖的繪制。上述的API函數(shù)分別是GetEnhMetaFile、GetEnhMetaFileHeader、PlayEnhMetaFile。 以下是上述函數(shù)的原型: (1)Declare Function GetEnhMetaFile Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal lpszMetaFile As String) As Long 說(shuō)明:取得磁盤文件中包含的一個(gè)增強(qiáng)型圖元文件的圖元文件句柄 參數(shù)表: lpszMetaFile --- String,包含了增強(qiáng)型圖元文件的一個(gè)磁盤文件的名字 返回值:Long,指向圖元文件的句柄。零表示出錯(cuò) (2)Declare Function GetEnhMetaFileHeader Lib "gdi32" Alias "GetEnhMetaFileHeader" (ByVal hemf As Long, ByVal cbBuffer As Long, lpemh As ENHMETAHEADER) As Long 說(shuō)明:取得增強(qiáng)型圖元文件的圖元文件頭 參數(shù)表:hemf ----------- Long,指向一個(gè)增強(qiáng)型圖元文件的句柄 cbBuffer ------- Long,ENHMETAHEADER結(jié)構(gòu)的大小 lpemh ---------- ENHMETAHEADER (3)Declare Function PlayEnhMetaFile Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, lpRect As RECT) As Long 說(shuō)明:在指定的設(shè)備場(chǎng)景中畫(huà)一個(gè)增強(qiáng)型圖元文件。與標(biāo)準(zhǔn)圖元文件不同,完成回放后,增強(qiáng)型圖元文件會(huì)恢復(fù)設(shè)備場(chǎng)景以前的狀態(tài) 返回值:Long,非零表示成功,零表示失敗。會(huì)設(shè)置GetLastError 參數(shù)表:參數(shù) 類型及說(shuō)明 hdc Long,目標(biāo)設(shè)備場(chǎng)景 hemf Long,欲描繪的增強(qiáng)型圖元文件的句柄 lpRect RECT,一個(gè)約束矩形,定義了在哪里描繪圖元文件 以下是使用以上函數(shù)實(shí)現(xiàn)矢量圖繪制的主要代碼,另外需要說(shuō)明的是上述函數(shù)只對(duì)增強(qiáng)型圖元(EMF)有效,并不支持(WMF)。 Private Sub Form_Activate() With lprect'設(shè)置RECT結(jié)構(gòu)成員主要用于定義了在哪里描繪圖元文件 .Left = 0 End Sub |
|
|