![]() |
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 |
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 |
Re: Zykloide zeichnen lassen
Wenns zu stakr flackert, nimm einfach DoubleBuffered:=true :wink:
|
Re: Zykloide zeichnen lassen
Zitat:
Ü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: |
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. |
Re: Zykloide zeichnen lassen
Zitat:
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 21:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz