另外如果颜色不分开的话创建 DIB指针总是不成功 不知道问题在那里
Public Function MakePoint2D(ByVal pArray As Long, _
ByRef SA As SAFEARRAY2D, ByVal ItemSize As cBEType, _
Optional ByVal ptrData As Long = 0, _
Optional ByVal lLbound1 As Long = 0, _
Optional ByVal lLbound2 As Long = 0, _
Optional ByVal cElements1 As Long = &H7FFFFFFF, _
Optional ByVal cElements2 As Long = &H7FFFFFFF) As Boolean
If pArray = 0 Then Exit Function
With SA
.cDims = 2 '这个数组有几维?
.fFeatures = FADF_AUTO And FADF_FIXEDSIZE '这个数组有什么特性(表示它是一个在堆栈里分配的固定大小的数组)
.cbElements = ItemSize '数组的每个元素有多大
.cLocks = 0 '这个数组被锁定过几次
.pvData = ptrData '这个数组里的数据放在什么地方
.Bounds(0).lLbound = lLbound1 '它的索引从几开始(不设置为0)
.Bounds(0).cElements = cElements1 '这一维有多少个元素?
.Bounds(1).lLbound = lLbound2 '它的索引从几开始(不设置为0)
.Bounds(1).cElements = cElements2 '这一维有多少个元素?
End With
CopyMemory ByVal pArray, VarPtr(SA), 4
MakePoint2D = True
End FunctionCall MakePoint2D(VarPtrArray(pDIBDATA), pDIBArray, cbELong, hDIB.pDIB, 0, 0, hDIB.Height, hDIB.Width)
Public Function MakePoint2D(ByVal pArray As Long, _
ByRef SA As SAFEARRAY2D, ByVal ItemSize As cBEType, _
Optional ByVal ptrData As Long = 0, _
Optional ByVal lLbound1 As Long = 0, _
Optional ByVal lLbound2 As Long = 0, _
Optional ByVal cElements1 As Long = &H7FFFFFFF, _
Optional ByVal cElements2 As Long = &H7FFFFFFF) As Boolean
If pArray = 0 Then Exit Function
With SA
.cDims = 2 '这个数组有几维?
.fFeatures = FADF_AUTO And FADF_FIXEDSIZE '这个数组有什么特性(表示它是一个在堆栈里分配的固定大小的数组)
.cbElements = ItemSize '数组的每个元素有多大
.cLocks = 0 '这个数组被锁定过几次
.pvData = ptrData '这个数组里的数据放在什么地方
.Bounds(0).lLbound = lLbound1 '它的索引从几开始(不设置为0)
.Bounds(0).cElements = cElements1 '这一维有多少个元素?
.Bounds(1).lLbound = lLbound2 '它的索引从几开始(不设置为0)
.Bounds(1).cElements = cElements2 '这一维有多少个元素?
End With
CopyMemory ByVal pArray, VarPtr(SA), 4
MakePoint2D = True
End FunctionCall MakePoint2D(VarPtrArray(pDIBDATA), pDIBArray, cbELong, hDIB.pDIB, 0, 0, hDIB.Height, hDIB.Width)
ByRef SA As SAFEARRAY1D, ByVal ItemSize As cBEType, _
Optional ByVal ptrData As Long = 0, _
Optional ByVal lLbound As Long = 0, _
Optional ByVal cElements As Long = &H7FFFFFFF) As Boolean
If pArray = 0 Then Exit Function
With SA
.cDims = 1
.fFeatures = 0
.cbElements = ItemSize
.cLocks = 0
.pvData = ptrData
.Bounds(0).lLbound = lLbound
.Bounds(0).cElements = cElements
End With
CopyMemory ByVal pArray, VarPtr(SA), 4
MakePoint1D = True
End Function另请教 在一维DIB图像数据数组都是 按行顺序的 x1 ,x2 ......之后换行,假如我要是按列排该怎么做 y1,y2,.....一列处理完后换列... 直到全部图像数据处理完毕