我可以在Visual Basic中创建点阵列数组

时间:2016-01-17 16:56:30

标签: arrays vb.net

Dim myPointsArray As New List(Of Point)创建了一个我可以用For Next循环填充的数组,但是我想要填充几个单独的数组,所以如果Dim myPointsArrays(20) as ....会很好工作,这样我就不必为每个单独的数组调暗点数组。然后我可以用嵌套的For Next循环填充它们。 这是我填写一个数组

For i = 1 To 6
myPointsArray.Add(New Point(Ox + HxPnt(4, i) / skale, Oy - HyPnt(4, i) / skale))
Next

这里Ox,Oy代表原点,HxHyPnts是一系列点的成员,skale用于将全局值缩放为使用像素绘制。 问题是我需要从几十个数组中绘制许多不同的折线和多边形。

2 个答案:

答案 0 :(得分:2)

您可以创建嵌套列表(List(Of T)不是Array):

Dim myPointsArray As New List(Of List(Of Point))
For i = 1 To 6
    Dim innerList = new List(Of Point)
    myPointsArray.Add(innerList)
    For j = 1 to 10
        innerList.Add(New Point(Ox + HxPnt(4, i) / skale, Oy - HyPnt(4, i) / skale))
    Next
Next

要再次迭代这些值,请使用以下命令:

For Each list As List(Of Point) in myPointsArray
    For Each p As Point in list
        // Access p here
    Next 
Next

答案 1 :(得分:0)

知道了! 我创建了一个新的点数组变量(newPoints),从列表中填充它然后用.ToArray thingy转换它。然后通过填充,清除和重新填充数组,在循环中绘制每条折线。这是最好的方法吗?对我来说似乎很好。

For Each list As List(Of Point) In myPointsArray
   For Each p As Point In list
      newPoints.Add(New Point((Ox + p.X) / skale, (Oy + p.Y) / skale))
   Next
e.Graphics.DrawLines(myPen, newPoints.ToArray)
newPoints.Clear()
Next