vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Analoges Anzeigeinstrument mit GDI+ 
Autor: MikeJ
Datum: 05.12.07 10:27

hi

hier http://s160492259.online.de/Upload/Anzeige.JPG habe ich mal ein Bild hinterlegt, wie die Anzeige aussieht (oberes Bild). Aus den beiden Bildern darunter wird sie erstellt, indem ich über einen DrawArc Befehl mit einer Texture Brush jeweils einen Kreisabschnitt des Vor- und Hintergrundbildes Zeichne.

Zum Zeichnen verwende ich den Folgenden Code:
Private Sub UpdateValue()
 
        Dim bmp As New Bitmap(ctrl.Width, ctrl.Height) 'Das Bitmap für die 
        ' Zeichnung
        Dim PenScale As New Pen(ForColor, 2) 'Stift für Scala
        Dim txpBackround As New TextureBrush(My.Resources.AnzeigeGrün) _
          'Farbverlauf für Hintergrund
        Dim txpForground As New TextureBrush(My.Resources.AnzeigeGrau) _
        'Farbverlauf für Vordergrund
        Dim penBackround As New Pen(txpBackround, 10) 'Stift mit Farbverlauf 
        ' Hintergrund
        Dim penForground As New Pen(txpForground, 10) 'Stift mit Farbverlauf 
        ' Vordergrund
        Dim Winkel As Integer 'Winkel für Skalierung
        Dim PointX As Point 'Scale-Strich Anfang
        Dim PointY As Point 'Scale-Strich Ende
 
 
        ctrl.Image = bmp 'Der Picturebox das Bild zuweisen
 
        'Schreiben des Wertes in das mittlere Label
        lblValue.Text = CStr(Value) 'Text
        lblValue.Left = CInt(ctrl.Width / 2 - lblValue.Width / 2) _
          'Positionskorrektur un X und Y
        lblValue.Top = CInt(ctrl.Height / 2 - lblValue.Height / 2)
 
        'Kontrolle, ob Value zwischen Min und Max liegt
        If Value < scaleMin Then
            Value = scaleMin
        ElseIf Value > scaleMax Then
            Value = scaleMax
        End If
 
        'Min Wert abziehen, damit Anzeige bei 0 beginnt
        Value -= scaleMin
 
        'Zeichnung der Scala
        Using ctrlGraph As Graphics = Graphics.FromImage(bmp)
            'Scaleneinteilung
            For Winkel = 135 To 405 Step 45 'Alle 45° ein Strich
                With PointX 'Anfangspunkt auf dem Aussenkreis der Skala
                    .X = CInt(1.05 * (Radius - Abstand) * Cos(Winkel * PI / _
                      180) + Mitte.X)
                    .Y = CInt(1.05 * (Radius - Abstand) * Sin(Winkel * PI / _
                    180) + Mitte.Y)
                End With
                With PointY 'Endpunkt 10% ausserhalb des Aussenkreis der Skala
                    .X = CInt(1.15 * (Radius - Abstand) * Cos(Winkel * PI / _
                      180) + Mitte.X)
                    .Y = CInt(1.15 * (Radius - Abstand) * Sin(Winkel * PI / _
                    180) + Mitte.Y)
                End With
                'With ctrlGraph
                With ctrlGraph
                    .SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
                    .DrawLine(PenScale, PointX, PointY)
                End With
            Next
 
            Select Case Style
                Case 1 'Style 1
 
                    With ctrlGraph 'Gaph anzeigen
                        .SmoothingMode = _
                          Drawing.Drawing2D.SmoothingMode.HighQuality
                        .DrawArc(penForground, RectPix(RectPrc(Frame, Prcsize), _
                        Abstand), CSng(135 + Value * DecPerUnit), CSng(270 - _
                        Value * DecPerUnit))
                        .DrawArc(penBackround, RectPix(RectPrc(Frame, Prcsize), _
                        Abstand), CSng(135), CSng(Value * DecPerUnit))
                        '.DrawArc(Pens.Pink, RectPix(RectPrc(Frame, Prcsize), 
                        ' Abstand), CSng(135 - Rundung), CSng(Value * 
                        ' DecPerUnit + Rundung + Rundung))
                    End With
            End Select
            'ctrlGraph.Dispose() 'Resourcen freigeben
        End Using
        ctrl.Refresh()
    End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Analoges Anzeigeinstrument mit GDI+1.736MikeJ04.12.07 21:46
Re: Analoges Anzeigeinstrument mit GDI+1.285Snof04.12.07 21:50
Re: Analoges Anzeigeinstrument mit GDI+1.356GPM04.12.07 22:09
Re: Analoges Anzeigeinstrument mit GDI+1.509MikeJ05.12.07 10:27
Re: Analoges Anzeigeinstrument mit GDI+1.245GPM05.12.07 13:02
Re: Analoges Anzeigeinstrument mit GDI+1.249MikeJ05.12.07 17:15

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel