Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27554

VS 2010 Problems with Cursor interval Chart

$
0
0
Hey all,

This is my first day on this forum. So let’s start whit a Question.

I'm trying to make a chart where my cursor says the X and Y values. Sadly I can’t get an interval of 0.1 at these values. The smallest interval I can get is 1.

For my test program I'm using the following code:


Code:

Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1

    Dim GraphOn As Boolean = False

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MeasData(4, 3) As Int64
        Dim MeasData1 As Int64
        Dim MeasData2 As New ArrayList

        Chart1.Series.Clear()

        'x-as
        MeasData(1, 0) = 1.15
        MeasData(2, 0) = 2.12
        MeasData(3, 0) = 3.12
        MeasData(4, 0) = 4.53

        'y-as data 1
        MeasData(1, 1) = 1
        MeasData(2, 1) = 2
        MeasData(3, 1) = 3
        MeasData(4, 1) = 4

        'y-as data 2
        MeasData(1, 2) = 2
        MeasData(2, 2) = 4
        MeasData(3, 2) = 6.3
        MeasData(4, 2) = 10

        'y-as data 3
        MeasData(1, 3) = 3
        MeasData(2, 3) = 4.5
        MeasData(3, 3) = 1
        MeasData(4, 3) = 8.1

        GraphOn = True

        For i As Integer = 0 To MeasData.GetUpperBound(1)

            Dim r As Integer = MeasData.GetLength(0)
            For j As Integer = 0 To r - 1
                MeasData1 = MeasData(j, i)
            Next
            MeasData2.Add(MeasData1)

        Next

        CheckedListBox1.Items.Clear()



        For k As Integer = 0 To MeasData.GetUpperBound(1)

            Chart1.Series.Add(k)
            Chart1.Series(k).ChartType = DataVisualization.Charting.SeriesChartType.Spline
            Chart1.Series(k).XValueMember = (MeasData2(0))
            For l As Integer = 0 To MeasData.GetLength(0) - 1
                Chart1.Series(k).Points.AddY(MeasData(l, k))

            Next

            CheckedListBox1.Items.Add(Chart1.Series(k).Name.ToString)
        Next


        Chart1.Visible = True

        Chart1.ChartAreas(0).AxisX.Minimum = 0
        Chart1.ChartAreas(0).AxisX.Interval = 0.5
        Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False
        Chart1.ChartAreas(0).CursorX.IntervalType = DateTimeIntervalType.Auto
        Chart1.ChartAreas(0).CursorX.LineColor = Color.SpringGreen
        Chart1.ChartAreas(0).CursorY.LineColor = Color.SpringGreen

        Chart1.ChartAreas(0).CursorX.IntervalType = DateTimeIntervalType.Auto

        Timer1.Start()


    End Sub


    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        For i As Integer = 0 To CheckedListBox1.Items.Count - 1

            If CheckedListBox1.GetItemChecked(i) = True Then
                Chart1.Series(i).Enabled = True
            Else : Chart1.Series(i).Enabled = False

            End If
        Next


    End Sub

    Private Sub chart1_MouseWhatever(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseMove

        If GraphOn = True Then

            'Aanmaken van variabels
            Dim test2 As HitTestResult = Chart1.HitTest(e.X, e.Y)

            Dim Cursorx As Integer = e.X
            Dim Cursory As Integer = e.Y

            Dim xvalue As Int64
            Dim yvalue As Int64


            'Als je in het plottinggebied komt dan
            If test2.ChartElementType = ChartElementType.PlottingArea Then

                'Set X-line
                Chart1.ChartAreas(0).AxisX.MajorTickMark.Interval = 0.1
                Chart1.ChartAreas(0).AxisX.Interval = 0.1
                Chart1.ChartAreas(0).CursorX.Interval = 0.1

                xvalue = Chart1.ChartAreas(0).AxisX.PixelPositionToValue(Cursorx)


                Chart1.ChartAreas(0).CursorX.IntervalType = DateTimeIntervalType.Auto

                Chart1.ChartAreas(0).CursorX.SetCursorPosition(xvalue)

                'Set y-line
                yvalue = Chart1.ChartAreas(0).AxisY.PixelPositionToValue(Cursory)
                Chart1.ChartAreas(0).CursorY.Interval = 0
                Chart1.ChartAreas(0).CursorY.SetCursorPosition(yvalue)

                Label1.Text = "Cursor = " & xvalue & " , " & yvalue & " (x,y)"

            End If

        End If
    End Sub

Hopefully can someone tell me why I can get a smaller interval.

Thanks in advance.

Viewing all articles
Browse latest Browse all 27554

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>