不知道这个有用没有:
Public Declare Function LineDDA Lib "gdi32" Alias "LineDDA" (ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal lpLineDDAProc As Long, ByVal lParam As Long) As Long
枚举指定线段中的所有点
Long,非零表示成功,零表示失败
n1,n2 ---------- Long,线段的x,y起点坐标
n3,n4 ---------- Long,线段的x,y终点坐标
lpLineDDAProc -- Long,vb5中的一个函数地址
lParam --------- Long,枚举过程中传递给回调函数的用户自定义值通常用这个函数执行自定义的线段作图——例如,可将一条线中的其他每个像素都设成不同的颜色。在MM_TEXT模式下,每个点都对应于设备中的一个像素——在这种模式下,也可用这个函数进行线段中的击中测试。线段中的最后一个点不会枚举出来
注意,我先给你写了一个例子,但是不全,必须是末坐标的一个数值必须大于始坐标,剩下的就是你自己的事情了。仓促而成,仅供参考
Private Sub Command1_Click()
Dim P(), i
Const StartPointX = 2
Const EndPointX = 10
Const StartPointY = 0
Const EndPointY = 20
ReDim P(IIf(EndPointY - StartPointY > EndPointX - StartPointX, EndPointY - StartPointY, EndPointX - StartPointX))
For i = 0 To UBound(P)
If EndPointY - StartPointY > EndPointX - StartPointX Then
Print "X:" & StartPointX + (i / (EndPointY - StartPointY)) * (EndPointX - StartPointX)
Print "Y:" & StartPointY + i
Else
'....
End If
Next i
End Sub