AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte in Paintbox bewegen

Ein Thema von Maurooon · begonnen am 17. Dez 2016 · letzter Beitrag vom 18. Dez 2016
Antwort Antwort
Seite 1 von 2  1 2      
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#1

Objekte in Paintbox bewegen

  Alt 17. Dez 2016, 16:15
Delphi-Version: 5
Hallo Community,

wie kann ich mit canvas gezeichnete Objekte automatisch mit der Zeit in x bzw y Richtung bewegen lassen? Ein Beispiel: ich zeichne einen Kreis auf die Koordinate 10,10 in einer 200x200 großen Paintbox. Nun möchte ich, dass der Kreis innerhalb x Sekunden auf die Koordinate 10,190 wander. Geht das überhaupt so wie ich mir das vorstelle? Also das etwas gezeichnetes wandert und dabei etwas anderes in der Paintbox gezeichnete nicht? Oder muss ich das mit einem image machen?

Schon jetzt vielen Dank für eure Hilfe!!! LG

Geändert von TBx (17. Dez 2016 um 19:42 Uhr) Grund: Den Schmerz aus dem Titel entfernt
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 16:27
Das Zeichnen der Paintbox geschieht im OnPaint-Event. Dort kannst du den Kreis dann ja an die passende Position zeichnen. Du musst nur zyklisch ein PaintBox.Invalidate aufrufen, damit das OnPaint-Event ausgelöst wird (z.B. durch einen Timer).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#3

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 16:59
Okay, und wie funktioniert ein Timer?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 17:01
Timer auf das Formular ziehen.
Interval einstellen.
Doppelklicken und bei der Ereignisbehandlung die Anweisungen eintragen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#5

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 17:03
Okay, und den "alten" Kreis löscht der Timer dann automatisch? Oder gibt es dafür einen Befehl?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 17:17
Paintbox.Invalidate;
veranlasst das Neuzeichnen.
Ob der alte Kreis dabei noch in dem Bild bleibt oder das alte Bild zuvor automatisch gelöscht wird, kannst Du einfach ausprobieren.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 19:14
Falls du das alte Bild auf jeden Fall löschen willst, kannst du einfach als erste Zeile im OnPaint Event Paintbox1.Canvas.FillRect(PaintBox1.ClientRect) reinschreiben. Natürlich vorher mit Paintbox1.Canvas.Brush.Color := clXYZ // clXYZ durch gewünschte Farbe ersetzen die gewünschte Farbe setzen damit da nicht plötzlich alles in Pink gezeichnet wird.
ABer im Normalfall sollte die Paintbox sowieso schon alles automatisch löschen wenn ich mich nicht irre.
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#8

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 19:18
Ich selbst benutze da immet PainBox1.refresh für, malt einfach alles weiß.

Weiß jemand ob es irgendwie möglich ist während eine Prozedur läuft (d.h. sie evtl eine Minute läuft weil sleep() eingebaut ist) einen anderen Button wie z.B. einen Radiobutton zu drücken?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Objekte in Painbox bewegen

  Alt 17. Dez 2016, 19:31
Weiß jemand ob es irgendwie möglich ist während eine Prozedur läuft (d.h. sie evtl eine Minute läuft weil sleep() eingebaut ist) einen anderen Button wie z.B. einen Radiobutton zu drücken?
Wenn Sleep() benutzt wird, dann "hängt" die komplette Anwendung für diese Dauer. Aus diesem Grund benutzt man kein Sleep. Auch nicht um irgendwas visuell schön aussehen zu lassen. Da baut man sich dann einen Thread in dem das alles abgearbeitet wird (darin kann man dann wiederum Sleep() benutzen) und gibt das an die GUI weiter. Sleep() und Application.ProcessMessages sollte man wo es geht vermeiden.
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#10

AW: Objekte in Paintbox bewegen

  Alt 18. Dez 2016, 15:44
Mhmmmm, okay.

Wie kann ich zwei PaintBoxen übereinander legen und die eine transparent machen, sodass ich das auf beiden Paintboxen gezeichnete sehe?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:13 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