PathSegmentCollectionを作成するには、文字列を解析する必要があります。文字列は、コマや(任意の)空白(改行、タブなど)で区切られた数字で構成され、科学的記数法を使用して数字を書くこともできます。
これは例です:"9.63074,9.63074 -5.55708e-006 0 ,0 1477.78"
そして、ポイントは次のとおりです。P1(9.63074、9.63074)、P2(-0,555708、0)、P3(0、1477.78)
数値を抽出するには、正規表現を使用します。
Dim RgxDouble As New Regex("[+-]?\b[0-9]+(\.[0-9]+)?(e[+-]?[0-9]+)?\b")
Dim Matches As MatchCollection = RgxDouble.Matches(.Value)
Dim PSegmentColl As New PathSegmentCollection
Dim PFigure As New PathFigure
With Matches
If .Count < 2 OrElse .Count Mod 2 <> 0 Then Exit Sub
PFigure.StartPoint = New Point(.Item(0).Value, .Item(1).Value)
For i As UInteger = 2 To .Count - 1 Step 2
Dim x As Double = .Item(i).Value, y As Double = .Item(i + 1).Value
PSegmentColl.Add(New LineSegment With {.Point = New Point(x, y)})
Next
End With
動作しますが、約10万(またはそれ以上)の文字列を解析する必要があり、この方法では遅すぎます。より効率的な解決策を見つけたいのですが、ほとんどの場合、数値は科学的記数法で書かれていません。それがより良い方法だと思うなら、C /C++を使用するC++/CLIで書かれたアセンブリを使用しても問題ありません。マネージコードではない、またはC#の安全でないコード。