Auf erstelltes Diagrammraster zeichnen

Anfängerfragen zum Programmieren mit PureBasic.
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: Auf erstelltes Diagrammraster zeichnen

Beitrag von BSP »

Hallo STARGATE.
Auch das CanvasGadget besitzt sowas wie einen Doppelpuffer (einer der angezeigt wird, einer auf dem gemalt wird) und bei StopDrawing() wird einfach getauscht.
Das bedeutet dann aber auch doppelten (Bild)- Speicherverbrauch?
Gruß: Bernd

PS.
Da müsste das Canvas ja mehr arbeiten als wenn ich mit einem normalem Image arbeite.
In meinem Beispiel mit dem Kaleidoskop z.B.:
Da muss das Canvas das sichtbare Bild ja erst einmal in den Zeichnenbereich kopieren, dann meine Zeichenbefehle übernehmen und dann wieder zurück in den Vordergrund "kopieren" (tauschen). Oder?
Wenn der Vordergrund nicht in den Hintergrund geschoben wird, würden ja sonst die alten Grafiken verloren gehen?
Oder verstehe ich da was falsch?

Beim Image bleibt ja das Bild erhalten, ich zeichne einfach weiter.

Bernd
PB 5.31 (x86) & (x64) Win10
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: Auf erstelltes Diagrammraster zeichnen

Beitrag von BSP »

Hallo.
Und wieder einmal bekomme ich auf für mich wichtige Fragen keine Antwort?
Meine Fragen dienen nicht der "Besserwisserei", sondern haben einen realen Hintergrund:
Ich nutze einige meiner kleinen "Haushaltshelfer" tatsächlich noch auf sehr alten Laptops mit wenig Platz. (P II, 560MB Arbeitsspeicher, WinME)
(Es muss ja nicht immer gleich alles ausgemustert werden, nur weils alt ist).
Bei meinem Stromprg habe ich mich z.B. an eine alte Vorgehensweise aus ATARI- Zeiten erinnert.
Die Listendatei ist eine "Endlos"- Liste. Es muss aber nicht immer alles geladen werde.
So nutze ich z.B. keine Linked- Lists in dem Prg, sonder hangel mich mit FileSeek() selber durch die Datei.
Dazu schreibe ich vor- und hinter jeden Datensatz ein WORD mit der Datensatzlänge.
Und nun überlege ich auch, ob ich lieber Images oder Canvas verwende.

Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Auf erstelltes Diagrammraster zeichnen

Beitrag von STARGÅTE »

Das bedeutet dann aber auch doppelten (Bild)- Speicherverbrauch?
Nein. Der eine Puffer ist das "Bild" selbst, auf dem auch gearbeitet wird, der andere Puffer ist das Fenster selbst, als Ausgabe.
Da müsste das Canvas ja mehr arbeiten als wenn ich mit einem normalem Image arbeite.
Nein, auch das Image selbst belegt einen Speicher. Wenn du es an das ImageGadget übergibst, wird eine Kopie des Originals gemacht, halt auf das Fenster. Deswegen kannst du auch das Image nach dem setzen theoretisch wieder freigeben und es wird trotzdem angezeigt.
Und wieder einmal bekomme ich auf für mich wichtige Fragen keine Antwort?
Vermutlich, weil du sie um 05:33 Uhr gestellt hast, und die meisten diese Frage nicht mehr in den "neuen" Post aufgelistet bekommen haben.
Die Listendatei ist eine "Endlos"- Liste. Es muss aber nicht immer alles geladen werde.
So nutze ich z.B. keine Linked- Lists in dem Prg, sonder hangel mich mit FileSeek() selber durch die Datei.
Dazu schreibe ich vor- und hinter jeden Datensatz ein WORD mit der Datensatzlänge.
Und nun überlege ich auch, ob ich lieber Images oder Canvas verwende.
Gerade weil du einen alten Laptop hast, solltest du dir unbedingt abgewöhnen zur Laufzeit ununterbrochen von der HDD (die ja auch alt ist) zu lesen und zu schreiben, für Sachen die normalerweise im RAM sein sollten.
Vorallem wird u.U. gerade deswegen eh die ganze Datei in den RAM gepuffert, also kannst du es gleich als LinkedList lesen.
Und wie schon oben erwähnt, ist ImageGadget und Canvas gleich im Verbrauch.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: Auf erstelltes Diagrammraster zeichnen

Beitrag von BSP »

Hallo STARGATE.
Sorry, das ich etwas "gemotzt" habe.
Aber das sind nicht die ersten Fragen, wo ich das Gefühl hatte,
Euch Profis sind diese Fragen "zu Simpel" für eine Antwort.

Zur Sache:
Nein. Der eine Puffer ist das "Bild" selbst, auf dem auch gearbeitet wird, der andere Puffer ist das Fenster selbst, als Ausgabe.
Nein, auch das Image selbst belegt einen Speicher. Wenn du es an das ImageGadget übergibst, wird eine Kopie des Originals gemacht, halt auf das Fenster. Deswegen kannst du auch das Image nach dem setzen theoretisch wieder freigeben und es wird trotzdem angezeigt.
Also macht das Canvas quasi das Gleiche wie
CreateImage() & SetgadgetState(),
nur eben in einem Rutsch.
Gerade weil du einen alten Laptop hast, solltest du dir unbedingt abgewöhnen zur Laufzeit ununterbrochen von der HDD (die ja auch alt ist) zu lesen und zu schreiben, für Sachen die normalerweise im RAM sein sollten.
Vorallem wird u.U. gerade deswegen eh die ganze Datei in den RAM gepuffert, also kannst du es gleich als LinkedList lesen.
Ja, ich muss gestehen, da war ich auch schon am Grübeln und hätte das demnächst noch als eigenständige Frage gestellt.
Aber so hast Du das ja nun in einem Rutsch beantwortet.
Danke dafür und nochmals Sorry für meine Ungedult.
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Antworten