AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Einzelne Objekte im Canvas löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Einzelne Objekte im Canvas löschen

Ein Thema von mariking2 · begonnen am 26. Mai 2011 · letzter Beitrag vom 30. Mai 2011
Antwort Antwort
Seite 1 von 3  1 23      
mariking2

Registriert seit: 26. Mai 2011
14 Beiträge
 
#1

Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 13:31
Hallo Miteinander,
ich sitze im Moment an einem Minipaintprogramm und habe folgendes Problem: Ich soll jedes einzelne Objekt auf dem Canvas(also jede Linie, jede Ellipse etc.) einzeln löschen können, ohne dass die anderen Objekte dabei beschädigt werden.
Im Internet habe ich schon einiges über ähnlich Funktionen gelesen, aber keines war irgendwie übertragbar. Ich habe zum Beispiel an eine Liste gedacht, die jeden Schritt in einem neuen Canvas speichert(Imag1.Canvas.Create)speichert(ähnlich Photoshop-Protokoll) und wenn ich eine Ebene in der Liste anklicke, soll der dazugehörige Canvas gelöscht/unsichtbar gemacht werden.
Ich weiß aber nicht, wie man dann dem String jeweils ein Canvas o.ä. zuweisen kann.

Bzw. gibt es andere Möglichkeiten?

//Das Programm ist angehängt, allerdings ohne jegliche Löschfunktion o.ä.
Angehängte Dateien
Dateityp: zip Photoshop.zip (247,8 KB, 8x aufgerufen)

Geändert von mariking2 (26. Mai 2011 um 13:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 13:36
Hi,

Mein spontaner Vorschlag wäre, die Objekte die gezeichnet werden in einer Liste ja zu speichern.
Wenn du ein löschen willst dann wird es aus der Liste entfernt und wird dann nicht mehr neugezeichnet.
Neugezeichnet wird nur was in der Liste ist mit der Repaint-Methode.

Ich hoffe es hilft dir weiter.
Coffeecoder
  Mit Zitat antworten Zitat
mariking2

Registriert seit: 26. Mai 2011
14 Beiträge
 
#3

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 13:38
Aber wie speicher ich die Zeichnungen in einer Liste, denn ich kenne nur StringLists und die helfen mir beim Zeichnen nicht wirklich weiter, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 13:45
Ich würde so vorgehen:

Koordinaten der Objekte (X1,X2,Y1,Y2) und die "Form" (Ellipse,...) in einer Listbox speichern.
Die Repaint-Methode läuft durch die Liste und zeichnet das neu.
So wenn du ein Objekt nicht mehr haben willst, löschte den entsprechenden Eintrag aus der Listbox.
Dann rufst du nochmal die Paint-Methode auf und das "gelöschte" Objekt wird nicht mehr neugezeichnet.
Coffeecoder
  Mit Zitat antworten Zitat
mariking2

Registriert seit: 26. Mai 2011
14 Beiträge
 
#5

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 13:48
Soweit verstanden. Eine (vielleicht blöde Frage): Wie lösche ich ein Item aus einer Liste?

Könntest Du mir bitte mal den Code für eine Prozedur geben, die alle Ereignisse aus der Liste aufruft und zeichnet. Denn ein String ist ja nicht gleich ein Befehl.

Geändert von mariking2 (26. Mai 2011 um 13:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.538 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 14:00
Nimm statt einer Stringliste eine TObjectList und lege Deine Zeichenobjekte darin ab. Löschen kannst Du es dann mit ObjectList.Delete(Index Deines Objekts).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mariking2

Registriert seit: 26. Mai 2011
14 Beiträge
 
#7

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 14:25
Wenn ich schreibe:
Code:
var
liste: TObjectList;
zeigt er mir an, dass TObjectList ein undefinierter Bezeichner ist.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.538 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 14:29
Du musst die Unit Contnrs einbinden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mariking2

Registriert seit: 26. Mai 2011
14 Beiträge
 
#9

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 14:35
Also die Liste hätte ich erstellt, wie speicher ich jetzt z.B. eine Ellipse ab?
Denn es muss auch Vordergrundfarbe, Füllfarbe, Stiftdicke und Brush-Style beachtet werden.

Geändert von mariking2 (26. Mai 2011 um 14:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.538 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Einzelne Objekte im Canvas löschen

  Alt 26. Mai 2011, 14:42
Erstell Dir eine Klasse mit den benötigten Attributen. Von dieser Klasse erstellst Du dann eine Instanz, die auf die gewünschte Zeichenfläche malt und speicherst sie (die Instanz) in der Liste. Wird nun eine Instanz aus der Liste gelöscht, gehst Du die Liste von vorn nach hinten durch und lässt alle noch verbleibenden Objekte neu zeichnen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:56 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