2020年4月7日火曜日

Oxyplot Mouse Events (01) Mouse events

Mouse events
Imports Oxyplot.Axes
Imports Oxyplot.Series
Public Class Form
    Private WithEvents Model As PlotModel
    Private lineSeries As LineSeries
    Private linearAxisX As LinearAxis
    Private linearAxisY As LinearAxis
    Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load
        Model = New PlotModel With {
            .Subtitle = "Left click and drag",
            .Title = "Mouse events",
            .Background = OxyColors.White
        }
        linearAxisX = New LinearAxis With {
            .Maximum = 1,
            .Minimum = -1,
            .Position = AxisPosition.Bottom
        }
        Model.Axes.Add(linearAxisX)
        linearAxisY = New LinearAxis With {
            .Maximum = 1,
            .Minimum = -1
        }
        Model.Axes.Add(linearAxisY)
        PlotView.Model = Model
        lineSeries = Nothing
    End Sub
    Private Sub Model_MouseDown(sender As Object, e As OxyMouseDownEventArgs) Handles Model.MouseDown
        If e.ChangedButton = OxyMouseButton.Left Then
            lineSeries = New LineSeries With {
                .Title = String.Format("LineSeries {0}", Model.Series.Count + 1),
                .MarkerType = MarkerType.None,
                .StrokeThickness = 2
            }
            lineSeries.Points.Add(linearAxisX.InverseTransform(e.Position.X, e.Position.Y, linearAxisY))
            Model.Series.Add(lineSeries)
            Model.InvalidatePlot(False)
            e.Handled = True
        End If
    End Sub
    Private Sub Model_MouseMove(sender As Object, e As OxyMouseEventArgs) Handles Model.MouseMove
        If Not IsNothing(lineSeries) Then
            lineSeries.Points.Add(linearAxisX.InverseTransform(e.Position.X, e.Position.Y, linearAxisY))
            Model.InvalidatePlot(False)
            e.Handled = True
        End If
    End Sub
    Private Sub Model_MouseUp(sender As Object, e As OxyMouseEventArgs) Handles Model.MouseUp
        If Not IsNothing(lineSeries) Then
            lineSeries = Nothing
            e.Handled = True
        End If
    End Sub
End Class

0 件のコメント:

コメントを投稿