tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Spyke
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
503
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    TobsDi TobsDi ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    6
    Hallo! Schon wieder ich
    Naja, jetzt hab ich wieder ein Problem...
    Ich hab eine Picturebox, in welche ich ein Koordinatensystem gezeichnet hab.
    Dieses wird nun mit der Zeit mit einem Graphen gefüllt.
    So ungefähr wie im Windows-Taskmanager, bloß von links.
    Wenn nun also der Graph eine Position x erreicht hat, welche kurz vor dem rechten Rand liegt, dann soll sich der komplette Inhalt der Picturebox nach links verschieben, und zwar genau in derselben Geschwindigkeit, wie neue Werte zum Graphen hinzukommen. Also kontinuierlich, meinetwegen 5 Pixel pro Sekunde.
    Könnte mir da jemand weiterhelfen?
    Die Aktualisierung des Graphen hab ich mit nem Timer übernommen, und das Zeichnen des Graphen mit Hilfe der Ergebnisse des letzten Threads:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    Private Sub Timer2_Draw_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2_Draw.Tick
            idx3 += 1
            Dim Rec As Rectangle = PictureBox2_Draw.ClientRectangle
            'y-Position der akt. Temperatur:
            Dim y As Integer = CInt(Rec.Height - Temp - 20)       '- 2 * (Rec.Height / 11)
            Using G As Graphics = Graphics.FromImage(Bmp)
                'Akt. Temperatur
                Using Sb As SolidBrush = New SolidBrush(Color.IndianRed)
                    G.FillRectangle(Sb, New Rectangle(20 + idx3, y, 2, 2))
                End Using
                Dim Stift As New Pen(Color.Black)
                Stift.Width = 2
                Stift.EndCap = Drawing2D.LineCap.ArrowAnchor
                'Koordinatensystem
                'Achsen
                G.DrawLine(Stift, 20, Rec.Height - 20, 20, 20)
                G.DrawLine(Stift, 20, Rec.Height - 20, Rec.Width - 20, Rec.Height - 20)
                'Zahlenunterteilung
                Dim Breite As Single = 50.0
                Dim Hoehe As Single = 50.0
                For x1 As Single = 20 + Breite To Rec.Width - 20 Step Breite
                    G.DrawLine(Pens.Black, x1, Rec.Height - 18, x1, 20)
                    G.DrawString(CStr(x1 - 20), New Font("Arial", 6.5), Brushes.Black, _
                                x1 - 10, Rec.Height - 15)
                Next
                For x2 As Single = Rec.Height - 20 - Hoehe To 20 Step -Hoehe
                    G.DrawLine(Pens.Black, 18, x2, Rec.Width - 20, x2)
                    G.DrawString(CStr(Rec.Height - x2 - 20), New Font("Arial", 6.5), Brushes.Black, _
                                0, x2 - 8)
                Next
                'Hintergrund-Temp-Info
                'G.DrawString(CStr(Math.Round(Temp, 2)) & "°C", New Font("Segoe UI", 50), _
                '            Brushes.BlueViolet, Rec.Width / 2, Rec.Height / 2)
                G.Flush()
            End Using
            PictureBox2_Draw.Invalidate()
        End Sub

    Vielen Dank im Voraus!
     

  2. #2
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Was genau passt nicht?
    Vielleicht hast du auch nen Screens wies falsch und richtig ausschauen soll.

    Und bearbeite mal dein Post ich glaube es gibt nen Code Tag für VB damit der Quelltext farbig hervorgehoben wird.
    Bei größerem Quelltext ohne Syntaxhighlight tu ich mich immer schwer den zu lesen
    TobsDi bedankt sich. 
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  3. #3
    TobsDi TobsDi ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    6
    Und bearbeite mal dein Post ich glaube es gibt nen Code Tag für VB damit der Quelltext farbig hervorgehoben wird.
    Echt? hab ich ned gefunden - wo gibts die Option?

    Also mit dem Graph an sich passt alles, wie du auf dem SS siehst, wird er angezeigt.
    Nur, er verschwindet nach ner Zeit im rechten Bildrand.
    Was ich will, ist, dass sich das komplette Koordinatensystem nach links verschiebt (so dass z.B. die y-Achse verschwindet, usw).
    Der schon gezeichnete Abschnitt des Graphs soll mit dem Koordinatensystem nach links aus dem Bild wandern; der rechte, neu gezeichnete Teil des Graphs aber soll von dem Zeitpunkt an, wo er die mit X gekennzeichnete Stelle erreicht, auch dort bleiben.

    So dass eben scheinbar das Koordinatensystem unter dem Graph weggezogen wird.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Koordinatensystem automatisch verschieben-screenshot001.jpg  
     

  4. #4
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von TobsDi Beitrag anzeigen
    Echt? hab ich ned gefunden - wo gibts die Option?
    Das ist irgend nen BBCode Tag, frag mich nicht welcher, da ich in C# Prog. nehm ich immer den PHP Tag in der Iconleiste damit ist es auch lesbar glaube aber nicht das das bei VB auch mit dem geht

    Ich hab mich mal bissel versucht durch den Code zu kämpfen.
    Du scheint eine Variable Step zu haben die für die Horizontale und Vertikale Darstellung des Netzes veranwortlich zu sein scheint.
    Das scheint mir so nicht richtig, das würde ich trennen sprich ein StepH und ein StepV oder so
    Problem besteht nämlich das sich deine Vertikale Darstellung auch ändern würde wenn die Linie nur über den Horizontalenbereich hinaus geht.

    Nun zum zeichnen.
    Du hast ja immer einen festen Bereich in dem du zeichnen willst, also durchlaufe deine for Schleifen auch in diesem festen Bereich:
    Code :
    1
    
    For x1 As Single = rec.X To rec.Right Step Breite
    die Position für die Darstellung der Linie und des Textes würde ich in der Schleife ermitteln.
    Ungefähr so:
    Code :
    1
    2
    3
    4
    
    xPosion=Int(x1/stepH)
    G.DrawLine(Pens.Black, xPosion, Rec.Height - 18, xPosion, 20)
    G.DrawString(CStr(xPosion - 20), New Font("Arial", 6.5), Brushes.Black, _
          xPosion - 10, Rec.Height - 15)

    Und schau dir mal die DrawString Methode genauer an, dort kannst du auch ein Rectangle über geben in welchem bereich der String gezeichnet werden darf und dazu noch StringAlignment zur Ausrichtung des Textes, vielleicht ist das besser als dieses Subtrahieren.

    Hoffe konnte helfen.
    Und Fehler sind nicht ausgeschlossen, alles entstand im Kopf und mein VB ist auch schon ne Weile her
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  5. #5
    TobsDi TobsDi ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    6
    Vielen Dank, so t es einigermaßen!
    Das "Step" is übrigens keine Variable, sondern das gibt an, dass bei jedem Durchlauf der For-Schleife zu der Zählvariablen nicht einfach "1", sondern das was dahinter steht, hinzugefügt wird. In dem Fall also "-Hoehe" oder "Breite".
    Sehr schön --> Facharbeit kann kommen
    mfg Tobi

    Edit: Keine "MankindException"
    Geändert von TobsDi (03.06.08 um 18:13 Uhr)
     

  6. #6
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von TobsDi Beitrag anzeigen
    Das "Step" is übrigens keine Variable
    Stimmt hast Recht, ich sags ja ohne Syntaxhighlight bin ich aufgeschmiessen
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

Ähnliche Themen

  1. InDesign - Bilder verschieben sich automatisch
    Von x_luckystar im Forum Desktop Publishing (DTP)
    Antworten: 2
    Letzter Beitrag: 03.03.10, 10:41
  2. Antworten: 3
    Letzter Beitrag: 19.12.08, 07:49
  3. Banner beim scrollen automatisch verschieben.
    Von d1ng0d0gt0r im Forum CSS
    Antworten: 2
    Letzter Beitrag: 10.05.08, 12:32
  4. Koordinatensystem
    Von KurtMurt im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 02.05.06, 14:47
  5. Koordinatensystem
    Von jessy_musik im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 16.11.04, 11:36