| Autor |
Beitrag |
bernd00000
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 31.01.08 15:47
Hallo,
ich würde gerne ein Zeichenprogram erstellen. (z.B. wie Paint)
Rechtecke und andere Geometrische Formen kann ich schon zeichnen. Das Program besteht aus einem Image (Canvas) und verschiedenen speedbuttons, wo man auswählen kann welche Form gezeichnet werden soll.
Hier ein kleiner Beispielquellcode:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.bitmapMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bitmap.canvas.Pen.Width := 5; bitmap.canvas.pen.Color := clblack; bitmap.canvas.rectangle (x1,y1,x2,y2); x2 := x; y2 := y1+x-x1; bitmap.canvas.rectangle (x1,y1,x2,y2); end;
procedure TForm1.bitmapMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin x1 := x; y1 := y; x2 := x; y2 := y; bitmap.canvas.rectangle (x1,y1,x2,y2); end; |
Ich würde die erzeugten Objekte jedoch gerne wieder markieren können, damit ich sie auch mal verschieben kann. Kann mir vielleicht einer bei diesem Problem behilflich sein?
Mit freundlichen Grüßen
Bernd
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 31.01.08 15:59
Da wirst du um einige Programmierarbeit nicht herumkommen. Weil mehr oder weniger vorgefertigt gibts da nix.
Was du machen musst:
1. Alle erstellten Objekte mit ihren Daten merken.
2. Wenn in das Image geklickt wird, dann die gespeicherten Objekte durchsuchen und falls auf ein Objekt geklickt wurde, Henkel dort anzeigen.
3. Wenn gerade ein Objekt ausgewählt ist, musst du zusätzlich noch darauf reagieren, wenn die Maus an den Positionen der Henkel geklickt und gezogen wird.
Ganz einfach ist das natürlich nicht, aber wenn du die Methoden, die zu den Objekten gehören (z.B. Henkel zeichnen, etc.) sauber in Objekte verpackst, dann sollte das ganze überschaubar bleiben.
Wichtig ist auch, dass du sauber zwischen den Zuständen des Programms trennst (Henkel wird gezogen, Objekt wird erstellt, ...).
|
|
bernd00000 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 31.01.08 16:09
Dankeschön schon einmal für die Antwort. Habe dazu aber noch ein paar Fragen.
1. Wie kann ich ein Objekt das während der Laufzeit erstellt wir speichern?
2. Wie rufe ich dieses Objekt wieder ab?
Ich glaube das ist das erste was ich umsetzen muss. Das Auswählen wäre dann der nächste Schritt. Aber dazu kann ich mich ja später noch mal melden.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 31.01.08 16:17
Du musst dir eine eigene Datenstruktur erstellen, in der du die Position, Größe, etc. speicherst. Mit Hilfe dieser Angaben kannst du dann feststellen, ob ein Klick innerhalb eines Objekts lag und dementsprechend reagieren.
|
|
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 31.01.08 16:31
Hi,
wenn Du auf das Benutzen 3rd-Party-Komponenten zurückgreifen willst, schau Dir mal folgendes an:
www.hicomponents.com/nimageen_features.asp
Gruß
rd3
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Do 31.01.08 17:13
@bernd00000
Guck dir die Demos an die mitgeliefert wurden. Dort ist auch ein kleiner Zeichenprogramm dabei.
Und frag mich nicht nach dem genauen Namen. Ob ich die Demos durchsuche oder du ist egal.
_________________ Popov
|
|
bernd00000 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 07.02.08 21:24
soo...es hat etwas länger gedauert weil ich die letzten Tage im Urlaub war.
Ich habe noch mal etwas gegoogelt und habe mir auch einmal die Demoprogramme von Delphi angeschaut. Leider ohne wirkliches Ergebnis!
Mir ist aber eine Frage aufgekommen.
Erstellt das Program überhaupt OBJEKTE, die man später auch (mit der richtigen Funktion) verschieben kann oder zeichnet das Program nur irgendwelche Linien auf dem Canvas-Feld? (hoffentlich versteht ihr was ich mit der Frage ausdrücken will^^)
Dankeschön jetzt schon mal
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: Do 07.02.08 21:35
bernd00000 hat folgendes geschrieben: |
Erstellt das Program überhaupt OBJEKTE... |
Welches Programm? Die Delphi-Demo nicht.
Deshalb:
jaenicke hat folgendes geschrieben: | | Du musst dir eine eigene Datenstruktur erstellen, in der du die Position, Größe, etc. speicherst. Mit Hilfe dieser Angaben kannst du dann feststellen, ob ein Klick innerhalb eines Objekts lag und dementsprechend reagieren. |
Du musst das Ganze also selbst programmieren, wie du dabei ungefähr vorgehen kannst, hat dir jaenicke in seinem ersten Post auch schon erklärt.
Ist vermutlich nicht ganz einfach, aber machbar.
|
|
bernd00000 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 07.02.08 21:39
ich meine meinen kurzen Programauszug!!!
und zu den Punkten die Jaenicke gepostet hat hab ich nicht wirklich viel gefunden (was für mich verständlich ist).
|
|
ub60
      
Beiträge: 765
Erhaltene Danke: 130
|
Verfasst: Do 07.02.08 22:19
Für das , was Du willst, gibt es ein gutes Tutorial: www.delphi-treff.de/...2/tlist/katalog/182/
ub60
|
|