 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 19.02.2011, 19:12 Titel: Verlaufslinie |
|
|
Guten Tag liebes Forum,
ich programmiere derzeit ein Programm welches den aktuellen Verlauf einer Variablen in einem "Koordinatensystem" (hat keine Werte, kommt noch) anzeigen soll. Derzeit funktioniert das ganze so dass, das gesamte gecleant wird (CLS) sobald der hintere Rand erreicht ist. Besser wäre es nun beim erreichen des endes die Kennlinie 1 Pixel nach links zu verschieben und den ältesten Wert zu löschen. Hat mir jemand eine Idee wie ich die Kennlinie verschieben kann?
MfG Sippo |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 19.02.2011, 20:01 Titel: |
|
|
Mit GET und PUT sollte das gehen...
einfach mal hier gucken:
GET (Grafik)
PUT (Grafik)
Wenn du nicht weiter weißt, schreib ich dir nen Beispiel, aber aktuell hab ich da keine lust zu  _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 19.02.2011, 20:03 Titel: |
|
|
vielen Dank, werde ich bei Gelegenheit ausprobieren.
Sieht aber vielversprechend aus
MfG Sippo |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 20.02.2011, 20:29 Titel: |
|
|
Abend zusammen,
habe mich nun mal drangesetzt aber irgendwie mag das doch nicht so.
Das Programm stürtzt ab. In der Befehlsreferenz steht, dies geschieht, wenn der Bereich, welcher in GET angegeben wird auserhalb des Bildschirms liegt. Dies kann aber eigentlich nicht sein:
folgendes hab ich gemacht: (veraltet)
Code: |
SCREEN 19,32,,&H01
...
Dim As Any Ptr bild ' Speicher für das Koordinatenfeld
bild = ImageCreate ( 674, 499 ) '(674X499) reservieren
...
do
...
get (101,50)-(775,549), bild
put (100,50), bild
line (100,550)-(100,50),&hFFFFFF 'y-achse neu zeichnen
line (775,550)-(775,50),&h000000 'letzte Spalte löschen
...
loop Until Inkey$ = Chr$(27)
End
|
MfG Sippo
edit: gibts ne möglichkeit Beiträge zu löschen?
oder wird ein Thread auch als ungelesen angezeigt wenn man einen Beitrag nur editiert?
Edit2:
Mittlerweile stürzt es nicht mehr ab aber es Flackert als würde es ständig von neuem beginnen. (kleines Testprogramm)
Das behobene Problem war, dass der Puffer zu klein war (1 Pixel x und 1 Pixel für y)
Code: | SCREEN 19,32,,&H01
Dim As Any Ptr bild ' Speicher für das Koordinatenfeld
bild = ImageCreate ( 675, 500 ) '(675X500) reservieren
color &hFFFFFF,&h000000
cls
line (775,550)-(100,550),&hFFFFFF ' x achse
line (100,550)-(100,50),&hFFFFFF ' y achse
'Testinhalt
color &hFFFF00,&h000000
line (101,51)-(774,549)
do
get (101,50)-(775,549), bild
put (100,50), bild
line (100,550)-(100,50),&hFFFFFF 'y-achse neu zeichnen
line (775,550)-(775,50),&h000000 'letzte Spalte löschen
sleep 1000
loop Until Inkey$ = Chr$(27)
End |
Zuletzt bearbeitet von Sippo am 20.02.2011, 21:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.02.2011, 21:02 Titel: |
|
|
Code: |
bild = ImageCreate ( 674, 499 ) '(674X499) reservieren
|
Code: |
get (101,50)-(775,549), bild
|
Zähl mal nach!
Edit: Flackern vermeidet man entweder mit mehreren Bildschirmseiten oder Screenlock/Screenunlock. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 20.02.2011, 21:05 Titel: |
|
|
Thx, das hatte ich im 2. Programm dann bereits behoben
und nun scheint auch das andere Problem beseitigt. Ich bin davon ausgegangen schwarze Pixel würden mitkopiert werden und überschreiben die alten. Dies scheint wohl nicht der Fall zu sein.
Vielen Dank für die Hilfe,
MfG Sippo |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 20.02.2011, 21:27 Titel: |
|
|
wenn du statt
Code: | put (100,50), bild, PSet |
nimmst, werden alle pixel geschrieben |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 20.02.2011, 22:36 Titel: |
|
|
ah wunderbar thx
nun funktionierts bis auf ein paar kleinigkeiten wunderbar.
MfG Sippo |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 02.03.2011, 23:07 Titel: |
|
|
Guten Abend zusammen,
das Programm läuft nun mittlerweile ganz gut aber ich habe noch 2 Fragen zur verfeinerung.
1. Da die Datenmenge die empfangen werden soll erecht groß ist, das Programm nach möglichkeit aber immer den aktuellsten Wert anzeigen soll wäre es sinnvoll den Buffer vor dem Empfangen eines Datenpaketes zu leeren. Ist das irgendwie möglich? Also ich meine keinen Buffer meines Programms sondern einen welcher scheinbar alles speichert bis ich es auslese. Das merk ich derzeit daran, dass das Programm mit der Zeit immer weiter hinterherhinkt.
2. Gibt es eine Möglichkeit zu Prüfen, ob in diesem Buffer Zeichen empfangen wurden? Ich habe es ohne Erfolg so versucht:
Code: | if not EOF(1) then
input #1, temp 'Aus COM - Schnittstelle auslesen
WRITE #2, temp ' IN Textdatei schreiben
end if |
MfG Sippo |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|