Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Zykloide zeichnen lassen (https://www.delphipraxis.net/24270-zykloide-zeichnen-lassen.html)

frankstar 18. Jun 2004 16:14


Zykloide zeichnen lassen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich hab an der Uni eine Belegarbeit zu erledige, und nun presierts mir langsam ein wenig.
Wir sollen die Zykloide eines Kreises zeichnen lassen.

Nun hab ich das Problem, dass ich den Kreis schonmal bewegt bekomme, habs per repeat versucht und per timer, aber das hat irgendwie nicht so alles hingehauen.
Könnt ihr mir ein paar tipps geben, wie ich den Kreis am besten "Rollen" lasse?
Das wärschon mal riesig, danke euch,grüße Frank

Nikolas 18. Jun 2004 17:20

Re: Zykloide zeichnen lassen
 
Nimm die doch ein Image und zeichne ins linke Ende den Kreis, dann warte 50ms, lösche das ganze Bild und zeichne den Kreis 5 Pixel nach rechts versetzt. Den PeripheriePunkt kannst du dann mit einer Farbe anmalen, damit sichtbar ist das der Kreis rollt und nicht einfach verschoben wird. Für den PeripheriePunkt kannst du ja vom Kreismittelpunkt ausgehend mit sin und cos einzeichnen.

Wenn's zu stark flackert kannst du mal probieren den alten Kreis zu übermalen und nicht das ganze Bild neu zu färben. [untested]

TOX

Ultimator 18. Jun 2004 17:25

Re: Zykloide zeichnen lassen
 
Wenns zu stakr flackert, nimm einfach DoubleBuffered:=true :wink:

neolithos 18. Jun 2004 18:13

Re: Zykloide zeichnen lassen
 
Zitat:

Zitat von Ultimator
Wenns zu stakr flackert, nimm einfach DoubleBuffered:=true :wink:

Immer mit den Holzhammer drauf! (Speicherverschwender) :mrgreen:

Überzeichne einfach das alte Bild indem du es nochmal mit Pen = Weiß malst!
Errechne die neue Position!


Wichtig dabei ist!

Die Daten zur Bilddarstellung müssen, auch in Paint gezeichnet werden.


Die Schleife sollte keine Schleife sein, sondern ein Timer-Ereignis!
Es muss eine Procedure geben die den Kreis zeichnet (Parameter: Position, Raduis des Arc, Farbe)
Die Farbe dient zum Löschen.

Weiterhin Variablen im Private-Bereich:
- Position des Kreises (integer, da y fest steht)
- Radius der Arc (Single)


Was muss im Timer Ereignis gemacht werden

1. Überzeichne den Alten mit Weiß
2. Weitersetzen des Kreises
3. Berechnung des neuen Winkels
4. Zeichne den neuen Halb-Kreis

Paint, zeichnet nur den Aktuellen Zustand!


Grüße von der HTW-DD

Warum muss ich immer, als "dummer" HTW-Ler den TU-Lern Helfen! :mrgreen:

Jens Schumann 18. Jun 2004 19:21

Re: Zykloide zeichnen lassen
 
Hallo,
ich halte die vorherigen Vorschläge nicht für zielführend.

- Alles in weiß zeichen geht evt. bei kleinen Grafiken. Wenn es sich aber um komplexe
Grafiken handelt fängt es auch an zu flackern.

- DoubleBuffered bezieht sich auf das Formular. D.h. es wird im Hintergrund auf eine Bitmap
gezeichnet und wenn alles gemalt wurde auf die Canvas des Forumlars kopiert (geht schnell).

Das DoubleBuffered Prinzip ist aber gar nicht so schlecht. Wenn Du Deine Grafikausgabe in eine
TPaintBox machst, reicht es doch diese zu "DoubleBuffern"
D.h. zeichne zuerst alles auf eine Bimap, die genau so groß ist wie die Paintbox.
Wenn alles gezeichnet wurde kopierst Du die Bitmap mit der API-Funktion BitBlt auf die
Canvas der TPaintBox. Das geht schnell und flackert nicht. Flackert auch nicht bei komplexeren Grafiken.

frankstar 20. Jun 2004 18:35

Re: Zykloide zeichnen lassen
 
Zitat:

Zitat von neolithos

Warum muss ich immer, als "dummer" HTW-Ler den TU-Lern Helfen! :mrgreen:

Hrhr, :cheers: sach ich da mal =)

Aber ich danke euch auf jeden Fall recht herzlichst.... Bisl gehts schon, noch paar kleine Details, aber so passt das schon für ne Unterschrift ;-)

Grüße Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 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