繁体   English   中英

我可以在Visual Basic中创建点数组的数组吗

[英]Can I Create an Array of Points Arrays in Visual Basic

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用于缩放全局值以使用像素进行绘制。 问题是我需要从数十个数组中绘制许多不同的折线和多边形。

您可以创建嵌套列表( 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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM