1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
503
503
EMPFEHLEN
-
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!
-
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
-
Echt? hab ich ned gefunden - wo gibts die Option?Und bearbeite mal dein Post ich glaube es gibt nen Code Tag für VB damit der Quelltext farbig hervorgehoben wird.
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.
-
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:
die Position für die Darstellung der Linie und des Textes würde ich in der Schleife ermitteln.Code :1
For x1 As Single = rec.X To rec.Right Step Breite
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
-
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)
-
Ähnliche Themen
-
InDesign - Bilder verschieben sich automatisch
Von x_luckystar im Forum Desktop Publishing (DTP)Antworten: 2Letzter Beitrag: 03.03.10, 10:41 -
Neue Emails von Konten in bestimmte Ordner automatisch verschieben lassen
Von darki777 im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 19.12.08, 07:49 -
Banner beim scrollen automatisch verschieben.
Von d1ng0d0gt0r im Forum CSSAntworten: 2Letzter Beitrag: 10.05.08, 12:32 -
Koordinatensystem
Von KurtMurt im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 02.05.06, 14:47 -
Koordinatensystem
Von jessy_musik im Forum Visual Basic 6.0Antworten: 8Letzter Beitrag: 16.11.04, 11:36





Zitieren
Login





