AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi image ständig speichern um undo und Redo zu ermöglichen ?
Thema durchsuchen
Ansicht
Themen-Optionen

image ständig speichern um undo und Redo zu ermöglichen ?

Ein Thema von Praxist · begonnen am 8. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#1

image ständig speichern um undo und Redo zu ermöglichen ?

  Alt 8. Aug 2008, 16:48
Hallo

wie speichere ich mein Image beim zeichnen, damit ich ein paar Schritte vorwärts oder
Rückwärts beim Fehler machen kann ?
Wie kann man Programm wissen ob was auf Image neu gezeichnet wurde damit es sie speichert ? : (

oder muss ich jedes mal die Image beim MouseUp speichern ?
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#2

Re: image ständig speichern um undo und Redo zu ermöglichen

  Alt 8. Aug 2008, 16:56
Zitat von Praxist:
oder muss ich jedes mal die Image beim MouseUp speichern ?
Kommt darauf an, ob Pixel für Pixel rückgängig gemacht werden soll oder jeweils bis zum letzten OnMouseUp
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#3

Re: image ständig speichern um undo und Redo zu ermöglichen

  Alt 8. Aug 2008, 17:05
Ich weiß nicht welches is besser aber wie ich sehe, bis zum letzten OnMouseUp
Ich möchte zum Beispiel für den Anwender nur 3 oder 4 Schritte zurück ermöglichen.
Es sollte ausreichen sein
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

Re: image ständig speichern um undo und Redo zu ermöglichen

  Alt 8. Aug 2008, 18:25
HI,

du könntest dein Bitmap jedes Mal als KOPIE in ein anderes Bitmap eines selbstsortierenden Arrays speichern. Ab gewissen Größen solltest du vllt. Probleme bekommen, wenn du 10 Schritte rückgängig machen willst und dein Bild 20 MPixel groß ist. Da könnte es dann schon zu einer erhöhten Speichernutzung kommen.
Was du aber auch machen kannst ist, dass du das ursprüngliche Bild speicherst und bei jedem Zeichnen alle Änderungen draufzeichnest, sodass du alle Änderungen bis zum letzten Speichern rückgängig machen kannst.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: image ständig speichern um undo und Redo zu ermöglichen

  Alt 9. Aug 2008, 02:32
Alternativ überlegt man sich eine Form von internem "Script", über welches alle Zeichenoperationen genau abgebildet werden können. Das kann sowas einfaches sein wie ein Record in dem aufgeführt ist "was?", "von wo?", "wo hin?", "farbe", etc. pp., halt alles was man zeichnen kann, bis hin zu einer regelrechten Sprache mit Syntax und allem Gedöns (welche dann, wenn nur intern verwendet, jedoch nicht unbedingt Klartext sein muss).
Dann muss man nur noch ein einziges Ausgangsbitmap als ganzes speichern, und von da an nur noch die deutlich kleineren Änderungs-"Scripte". Will man dann einen Schritt zurück, führt das Zeichenprogramm vom Bitmap aus einfach alle Script-Schritte weniger eins aus. Diese Methode ist zunächst einmal etwas aufwendig und will sehr gut gelpant und durchdacht sein, aber ab einer gewissen Schrittanzahl bzw. Bildgröße ist es der einzig praktikable Weg zu einer Undo/Redo Funktion. Photoshop ist da ein prima Beispiel.


Edit: Eine andere Variante die erheblich einfacher ist ist es, wenn du jeweils immer nur die Differenzbilder zu einem "ersten" Referenzbild speicherst, und diese dann z.B. mit der zLib o.ä. komprimiert ablegst. Gekniffen ist man dan nur in solchen Extremfällen, wenn in einem Schritt sehr viel Bild geändert wurde (FloodFill ohne Grenzen z.B.). Jedoch dürfte dieser Weg auch aus Sicht der Geschwindigkeit dem o.g. unterliegen, weil für jedes Undo N kleine Streams dekomprimiert und verknüpft werden. Ich würde jeder Zeit zu obigem tendieren
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#6

Re: image ständig speichern um undo und Redo zu ermöglichen

  Alt 10. Aug 2008, 09:18
Es hat geklappt mit array
Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz