Seite 2 von 2

Re: Auf erstelltes Diagrammraster zeichnen

Verfasst: 27.09.2012 05:33
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

Re: Auf erstelltes Diagrammraster zeichnen

Verfasst: 28.09.2012 03:37
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

Re: Auf erstelltes Diagrammraster zeichnen

Verfasst: 28.09.2012 03:54
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.

Re: Auf erstelltes Diagrammraster zeichnen

Verfasst: 28.09.2012 04:56
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