これ何て呼びますか Part2

VB2010Expressを使用しています。
Cahrtで2点を結んだ線を何本も書かせていますが、

With Chart1
   .Series.Clear()

   For m = 1 To Num
      .Series.Add(m - 1)
      .Series(m -1).ChartType= _
      System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line
      .Series(m - 1).Points.AddXY(StartY(m), StartX(m))
      .Series(m - 1).Points.AddXY(EndY(m), EndX(m))
   Next
End With

このやり方だと線の本数が100本、200本程度までならいいのですが、数百本、1000本になると、
とてつもなく処理(描画?)の時間が掛かるため、以下のように変更してみたのですが、

With Chart1
   .Series.Clear()
   .Series.Add(0)
   .Series(0).ChartType = _
     System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line

   For m = 1 To Num
      .Series(0).Points.AddXY(StartY(m), StartX(m))
      .Series(0).Points.AddXY(EndY(m), EndX(m))
   Next
End With

これだと、新しくSeriesを追加しないので時間がかなり速くなるのですが、全ての点がつながって
しまいます。
どのようにしたら、線が別々に書けるのでしょうか?

A 回答 (1件)

おそらく、あなたの目的が『罫線』とか『図形』を描きたい(UMLとかフローチャートみたいのが描きたい) のだと思うのですが、この用途では Cahrt を使うこと自体が間違っていると思います。

Chart はあくまで『グラフを作成するコントロール』なので、『線の本数が数百本』 という使い方を想定していません。(数百本の折れ線グラフってあんまり見ないですよね)


このような用途は、System.Drawing を使って自前で描画するのことになると思います。以下なんかを参考にして工夫してみてください。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

※.NET Windows Form の Drow は元々とっても遅いので、WPF も検討することをお勧めします。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

わたしは、ExcelVBA初心者ですが、元々ExcelVBAで作ったものをVBでと思い、作っています。
VB自体は初めてなのでまだまだ知らない事が多すぎるようです。
現在の作り方では9割程度完成しており、実際には線が数百本となることはまず無い(多くても2百本
くらいかな?)のでこのまま進めてみようと思います。

完成後、shitabaさんに教えて頂いた、System.DrawingやWPF(正直言いますと何のことだかよく
分かっていませんが)を勉強して、出来れば改良したいと思います。
この先もっと複雑なものも作ってみたいと思っています(自分の技量では恐らく出来ないレベルのもの
ですが...)ので、それにはもっと色々と勉強する必要があります。

お礼日時:2011/01/10 14:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報