33,008
社区成员
发帖
与我相关
我的任务
分享
Public Sub SetI(Rect As RectStruct, SourceArray() As Long, TargetArray() As Long)
Dim X As Long, Y As Long
Dim g As Long
Dim S() As Long
Dim gg As Long
ReDim TargetArray(Rect.Left - OutRangeLength To Rect.Right + OutRangeLength, Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
ReDim S(Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
For X = Rect.Left To Rect.Right
For Y = Rect.Top To Rect.Bottom
g = SourceArray(X, Y)
For gg = 0 To g - 1
S(Y, gg) = S(Y - 1, gg)
Next gg
For gg = g To 255
S(Y, gg) = S(Y - 1, gg) + 1
Next gg
For gg = 0 To 255
TargetArray(X, Y, gg) = TargetArray(X - 1, Y, gg) + S(Y, gg)
Next gg
Next Y
ReDim S(Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
Next X
End Sub
Public Function GetP(Rect As RectStruct, OperateArray() As Long, g As Long) As Long
GetP = OperateArray(Rect.Left - 1, Rect.Top - 1, g) - OperateArray(Rect.Right, Rect.Top - 1, g) - OperateArray(Rect.Left - 1, Rect.Bottom, g) + OperateArray(Rect.Right, Rect.Bottom, g)
End Function
Public Sub SetI(Rect As RectStruct, SourceArray() As Long, TargetArray() As Long)
Dim X As Long, Y As Long
Dim g As Long
Dim S() As Long
Dim gg As Long
ReDim TargetArray(Rect.Left - OutRangeLength To Rect.Right + OutRangeLength, Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
ReDim S(Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
For X = Rect.Left To Rect.Right
For Y = Rect.Top To Rect.Bottom
g = SourceArray(X, Y)
For gg = 1 To g - 1
S(Y, gg) = S(Y - 1, gg)
Next gg
For gg = g To 255
S(Y, gg) = S(Y - 1, gg) + 1
Next gg
TargetArray(X, Y, g) = TargetArray(X - 1, Y, g) + S(Y, g)
For gg = 1 To 255
TargetArray(X, Y, gg) = TargetArray(X - 1, Y, gg) + S(Y, gg)
Next gg
Next Y
ReDim S(Rect.Top - OutRangeLength To Rect.Bottom + OutRangeLength, 255)
Next X
End Sub
Public Function GetP(Rect As RectStruct, OperateArray() As Long, g As Long) As Long
GetP = OperateArray(Rect.Left - 1, Rect.Top - 1, g) - OperateArray(Rect.Right, Rect.Top - 1, g) - OperateArray(Rect.Left - 1, Rect.Bottom, g) + OperateArray(Rect.Right, Rect.Bottom, g)
End Function