另外如果颜色不分开的话创建 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)

解决方案 »

  1.   

    创建 DIB一维指针 也是同样的问题?Public Function MakePoint1D(ByVal pArray As Long, _
            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,.....一列处理完后换列... 直到全部图像数据处理完毕