tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルユーザーコントロールについて
記事No9598
投稿日: 2009/11/17(Tue) 17:16
投稿者たっち
VB2008にてグラフを出力するプログラムを作成しているのですが、動いてくれません。
どこがおかしいのかをご教授願いたいです。

・グラフの描写には「zedgraph」というオープンソースのクラスを使っています。
・ユーザーコントロールとしてクラスを作ると上手く動いてくれません。
・参考:http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_02/zedgraph_04.html
・ユーザーコントロールに貼り付けたグラフのnameは「zg1」になってます

以下フォームのソース
Public Class Form1
 Dim test2 As New draw_graph

Private Sub cmdInvisible_Click(ByVal sender As System.Object, _
             ByVal e As System.EventArgs) Handles cmdInvisible.Click

        Dim x2 As Integer

        x2 = txtvalur1.Text

        test2.output_linegraph(x2)
    End Sub
End Class

以下ユーザーコントロールクラスのソース
Imports ZedGraph
Public Class draw_graph

    Dim list As New PointPairList
    Dim i As Integer

    Private Sub Form_Load(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles MyBase.Load
        Create_LineGraph(zg1) ' 折れ線グラフ
    End Sub

    ' グラフの出力
    Public Sub output_linegraph(ByRef x As Double)

        list.Add(i, x)

        draw_linegraph(zg1, list)

        i += 1

    End Sub


    ' グラフの描写
    Private Sub draw_linegraph(ByVal zg As ZedGraphControl, _
                               ByVal list As PointPairList)

        Create_LineGraph(zg)

        zg.GraphPane.CurveList.Clear()

        Dim myPane As GraphPane = zg.GraphPane

        Dim myCurve As LineItem

        myCurve = myPane.AddCurve( _
            "測定値", list, Color.Red, SymbolType.Diamond)
        myCurve.Symbol.Fill = New Fill(Color.White) ' ラインの色

        ' グラフの際描写
        zg.AxisChange()
        zg.Invalidate()
    End Sub

    ' グラフの設定
    Private Sub Create_LineGraph(ByVal zg As ZedGraphControl)

        Dim myPane As GraphPane = zg.GraphPane

        ' グラフ/X軸、Y軸のタイトル設定
        myPane.Title.Text = "線グラフのサンプル"
        myPane.XAxis.Title.Text = "時間"
        myPane.YAxis.Title.Text = "値"

        ' X軸の目盛りを描画
        myPane.XAxis.MajorGrid.IsVisible = True

        ' Y軸のスケールを赤に
        myPane.YAxis.Scale.FontSpec.FontColor = Color.Red
        myPane.YAxis.Title.FontSpec.FontColor = Color.Red

        ' 反対側のY軸の目盛りの描画
        myPane.YAxis.MajorTic.IsOpposite = False
        myPane.YAxis.MinorTic.IsOpposite = False

        ' Yが0の位置の水平線
        myPane.YAxis.MajorGrid.IsZeroLine = True
        myPane.YAxis.Scale.Align = AlignP.Inside

        ' Y軸の範囲を指定する
        myPane.YAxis.Scale.Min = -20
        myPane.YAxis.Scale.Max = 30
        myPane.YAxis.IsVisible = True

        ' グラフ領域の内側をグラデーションに
        myPane.Chart.Fill = _
            New Fill(Color.White, Color.LightGray, 45.0F)

        ' テキストボックスをグラフの左下に描画
        Dim text As New TextObj( _
          "Zoom: 左のマウスボタンでドラッグ" & Chr(10) & _
          "Pan: Ctrl+左ボタンでドラッグ" & Chr(10) & _
          "Context Menu: 右ボタン", _
           0.05F, 0.95F, CoordType.ChartFraction, AlignH.Left, AlignV.Bottom)
        text.FontSpec.StringAlignment = StringAlignment.Near
        myPane.GraphObjList.Add(text)

        ' スクロールバーは非表示
        zg.IsShowHScrollBar = False
        zg.IsShowVScrollBar = False
        zg.IsAutoScrollRange = True

        ' ポイントの値をToolTip風に表示する
        zg.IsShowPointValues = True

        zg.AxisChange()

    End Sub

End Class

VB暦一ヶ月初心者が書いたコードですので可笑しい所は多々あると思いますが、
どこが致命的なのかを指摘していただければ幸いです。

よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: ユーザーコントロールについて
記事No9615
投稿日: 2009/11/20(Fri) 03:01
投稿者たっち
お騒がせしました。自己解決いたしました。
コードミスだったようです…

[ツリー表示へ]