以下為EMF版(Access 2000及更高版本)的PictureData結構:
'PictureData信息頭
PictureData(0-7) PictureData信息頭
'EMF信息頭
PictureData(8) iType As Long
PictureData(12) nSize As Long
PictureData(16) rclBounds{Long,Long,Long,Long}
PictureData(32) rclFrame{Long,Long,Long,Long}
PictureData(48) dSignature As Long
PictureData(52) nVersion As Long
PictureData(56) nBytes As Long
PictureData(60) nRecords As Long
PictureData(64) nHandles As Integer
PictureData(66) sReserved As Integer
PictureData(68) nDescription As Long
PictureData(72) offDescription As Long
PictureData(76) nPalEntries As Long
PictureData(80) szlDevice{Width As Long,Height As Long}
PictureData(88) szlMillimeters{Long,Long}
PictureData(96) cbPixelFormat As Long
PictureData(100) offPixelFormat As Long
PictureData(104) bOpenGL As Long
PictureData(108) szMicroMeters{Long,Long}
'EMF數(shù)據(jù)段
PictureData(116)~結尾
【PictureData信息頭】
PictureData(0)指定整個圖形的格式:
DIB:設備無關圖元(=40),文件頭長度為40,其后為像素數(shù)據(jù)。
WMF:Windows MetaFile(=3),文件頭長度為8,其后為WMF。
EMF:Enhanced MetaFile(=14),文件頭長度為8,其后為EMF。
Access97及以下版本使用DIB和WMF,Access 2000及以上版本使用DIB/WMF/EMF。
【EMF信息頭】
iType指定BMP版本:
BMP3.0:BITMAPINFOHEADER(=40)也就是DIB
BMP4.0:BITMAPV4HEADER(=108)
BMP5.0:BITMAPV5HEADER(=124)
實際上,iType等價于文件頭的長度,PictureData(8)~PictureData(8+iType)即圖形信息頭的全部內(nèi)容。
【EMF數(shù)據(jù)段】
由多條EMF記錄(EMR)構成,每條記錄均包含EMR定義和EMR參數(shù)。(EMF信息頭其實也是一條特殊的EMR,同樣符合EMR格式定義)
EMR定義:
iType As Long
nSize As Long
EMR.iType
EMR_HEADER 1
EMR_POLYBEZIER 2
EMR_POLYGON 3
EMR_POLYLINE 4
EMR_POLYBEZIERTO 5
EMR_POLYLINETO 6
EMR_POLYPOLYLINE 7
EMR_POLYPOLYGON 8
EMR_SETWINDOWEXTEX 9
EMR_SETWINDOWORGEX 10
EMR_SETVIEWPORTEXTEX 11
EMR_SETVIEWPORTORGEX 12
EMR_SETBRUSHORGEX 13
EMR_EOF 14
EMR_SETPIXELV 15
EMR_SETMAPPERFLAGS 16
EMR_SETMAPMODE 17
EMR_SETBKMODE 18
EMR_SETPOLYFILLMODE 19
EMR_SETROP2 20
EMR_SETSTRETCHBLTMODE 21
EMR_SETTEXTALIGN 22
EMR_SETCOLORADJUSTMENT 23
EMR_SETTEXTCOLOR 24
EMR_SETBKCOLOR 25
EMR_OFFSETCLIPRGN 26
EMR_MOVETOEX 27
EMR_SETMETARGN 28
EMR_EXCLUDECLIPRECT 29
EMR_INTERSECTCLIPRECT 30
EMR_SCALEVIEWPORTEXTEX 31
EMR_SCALEWINDOWEXTEX 32
EMR_SAVEDC 33
EMR_RESTOREDC 34
EMR_SETWORLDTRANSFORM 35
EMR_MODIFYWORLDTRANSFORM 36
EMR_SELECTOBJECT 37
EMR_CREATEPEN 38
EMR_CREATEBRUSHINDIRECT 39
EMR_DELETEOBJECT 40
EMR_ANGLEARC 41
EMR_ELLIPSE 42
EMR_RECTANGLE 43
EMR_ROUNDRECT 44
EMR_ARC 45
EMR_CHORD 46
EMR_PIE 47
EMR_SELECTPALETTE 48
EMR_CREATEPALETTE 49
EMR_SETPALETTEENTRIES 50
EMR_RESIZEPALETTE 51
EMR_REALIZEPALETTE 52
EMR_EXTFLOODFILL 53
EMR_LINETO 54
EMR_ARCTO 55
EMR_POLYDRAW 56
EMR_SETARCDIRECTION 57
EMR_SETMITERLIMIT &nbs
'PictureData信息頭
PictureData(0-7) PictureData信息頭
'EMF信息頭
PictureData(8) iType As Long
PictureData(12) nSize As Long
PictureData(16) rclBounds{Long,Long,Long,Long}
PictureData(32) rclFrame{Long,Long,Long,Long}
PictureData(48) dSignature As Long
PictureData(52) nVersion As Long
PictureData(56) nBytes As Long
PictureData(60) nRecords As Long
PictureData(64) nHandles As Integer
PictureData(66) sReserved As Integer
PictureData(68) nDescription As Long
PictureData(72) offDescription As Long
PictureData(76) nPalEntries As Long
PictureData(80) szlDevice{Width As Long,Height As Long}
PictureData(88) szlMillimeters{Long,Long}
PictureData(96) cbPixelFormat As Long
PictureData(100) offPixelFormat As Long
PictureData(104) bOpenGL As Long
PictureData(108) szMicroMeters{Long,Long}
'EMF數(shù)據(jù)段
PictureData(116)~結尾
【PictureData信息頭】
PictureData(0)指定整個圖形的格式:
DIB:設備無關圖元(=40),文件頭長度為40,其后為像素數(shù)據(jù)。
WMF:Windows MetaFile(=3),文件頭長度為8,其后為WMF。
EMF:Enhanced MetaFile(=14),文件頭長度為8,其后為EMF。
Access97及以下版本使用DIB和WMF,Access 2000及以上版本使用DIB/WMF/EMF。
【EMF信息頭】
iType指定BMP版本:
BMP3.0:BITMAPINFOHEADER(=40)也就是DIB
BMP4.0:BITMAPV4HEADER(=108)
BMP5.0:BITMAPV5HEADER(=124)
實際上,iType等價于文件頭的長度,PictureData(8)~PictureData(8+iType)即圖形信息頭的全部內(nèi)容。
【EMF數(shù)據(jù)段】
由多條EMF記錄(EMR)構成,每條記錄均包含EMR定義和EMR參數(shù)。(EMF信息頭其實也是一條特殊的EMR,同樣符合EMR格式定義)
EMR定義:
iType As Long
nSize As Long
EMR.iType
EMR_HEADER 1
EMR_POLYBEZIER 2
EMR_POLYGON 3
EMR_POLYLINE 4
EMR_POLYBEZIERTO 5
EMR_POLYLINETO 6
EMR_POLYPOLYLINE 7
EMR_POLYPOLYGON 8
EMR_SETWINDOWEXTEX 9
EMR_SETWINDOWORGEX 10
EMR_SETVIEWPORTEXTEX 11
EMR_SETVIEWPORTORGEX 12
EMR_SETBRUSHORGEX 13
EMR_EOF 14
EMR_SETPIXELV 15
EMR_SETMAPPERFLAGS 16
EMR_SETMAPMODE 17
EMR_SETBKMODE 18
EMR_SETPOLYFILLMODE 19
EMR_SETROP2 20
EMR_SETSTRETCHBLTMODE 21
EMR_SETTEXTALIGN 22
EMR_SETCOLORADJUSTMENT 23
EMR_SETTEXTCOLOR 24
EMR_SETBKCOLOR 25
EMR_OFFSETCLIPRGN 26
EMR_MOVETOEX 27
EMR_SETMETARGN 28
EMR_EXCLUDECLIPRECT 29
EMR_INTERSECTCLIPRECT 30
EMR_SCALEVIEWPORTEXTEX 31
EMR_SCALEWINDOWEXTEX 32
EMR_SAVEDC 33
EMR_RESTOREDC 34
EMR_SETWORLDTRANSFORM 35
EMR_MODIFYWORLDTRANSFORM 36
EMR_SELECTOBJECT 37
EMR_CREATEPEN 38
EMR_CREATEBRUSHINDIRECT 39
EMR_DELETEOBJECT 40
EMR_ANGLEARC 41
EMR_ELLIPSE 42
EMR_RECTANGLE 43
EMR_ROUNDRECT 44
EMR_ARC 45
EMR_CHORD 46
EMR_PIE 47
EMR_SELECTPALETTE 48
EMR_CREATEPALETTE 49
EMR_SETPALETTEENTRIES 50
EMR_RESIZEPALETTE 51
EMR_REALIZEPALETTE 52
EMR_EXTFLOODFILL 53
EMR_LINETO 54
EMR_ARCTO 55
EMR_POLYDRAW 56
EMR_SETARCDIRECTION 57
EMR_SETMITERLIMIT &nbs