Zeigerinstrument in VB 2008 erstellen

Majestic_1987

Level-1
Beiträge
270
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, nach einigem suchen habe ich folgenden code gefunden, welcher so nun einen zeiger malt, welcher sich im Kreis dreht. Ich denke ein paar Grenzen werde ich da auch noch hinbekommen. ABER wie mache ich daraus jetzt ein Steuerelement, dass ich mit Werten versorgen kann und vor allem:

Wie kann ich dafür sorgen, dass das malen des Zeigers nicht mit dem Laden des Forms einhergeht? Habs schon versucht indem ich das OnPaint-Ding durch nen eigenen Prozedurnamen ersetzt und Private gemacht hab und ihm dann nen Handle vom Button gegeben hab..das ging aber nicht weil er dann meckert, der übergebene Parameter entspräche nicht dem System.Windows.Forms.PaintEventArgs. Vielleicht kann mir wer helfen, fange grad mit VB an...

Code:
Public Class frmZeiger
    Public MiddlePoint As New PointF(150, 150)
    Public MainRadius As Integer = 100
    Public Drehwinkel As Decimal = 0
    Public Value As Single = 0
    Private Direction As Boolean

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        With e.Graphics
            .SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality

            Dim PenBlack As New Pen(Color.Black, 4)

            Dim NeedleEnd As New PointF(MiddlePoint.X - MainRadius * Math.Sin(Drehwinkel), MiddlePoint.Y - MainRadius * Math.Cos(Drehwinkel))
            .DrawLine(PenBlack, MiddlePoint, NeedleEnd)

        End With
    End Sub

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

        If Value >= 0 Then
            Direction = True

        ElseIf Value < 0 Then
            Direction = False
        End If

        If Direction = True Then
            Value += 0.5
        ElseIf Direction = False Then
            Value -= 0.5
        End If

        Drehwinkel = (2 * Math.PI) / 1100 * Value

        Invalidate()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True

    End Sub
End Class
 
Zuletzt bearbeitet:
Zurück
Oben