![]() |
Zeigerbewegungen einer Uhr darstellen
Ich soll eine analoge Uhr programmieren.
Kann mir jemand bei der Umsetzung helfen? Ich habe mir schon Gedanken gemacht, das ja die Zeiger immer vom Mittelpunkt ausgehen und dann einen Endpunkt brauchen mit X- und Y-Koordinaten. Kann man die irgendwie berechnen, mit dem Kreisumfang oder so? Wie schafft man es den Start der Uhr auf die aktuelle Uhrzeit bezogen zu timen??? |
Re: Zeigerbewegungen einer Uhr darstellen
Hallo Martha,
die Lösung für die Koordinaten solltest Du unter den trigonometrischen Funktionen in Deinem Mathebuch finden. Tipp: Du befindest Dich in einem karthesischen Koordinatensystem, ein Dreieck mit den Eckpunkten (0,0), (x,0), (x,y) hat demnach für x<>0 bei (x,0) immer einen rechten Winkel... Die aktuelle Systemzeit kannst Du mit der Funktion Now ermitteln. Sieh einmal in der Delphi Online-hilfe (OH) nach. |
Re: Zeigerbewegungen einer Uhr darstellen
Aus meinem Delphibuch:
Eine Form mit Timerkomponente ist alles was man braucht 1. Funktion zur Winkelberechnung:
Delphi-Quellcode:
procedure TForm1.Berechne_xy(winkel: Real; var xi,yi: Integer);
var x,z: real; Begin (*Winkel korrigieren um Viertelkreis zurück*) winkel := winkel - pi/2; (*Koordinaten berechnen*) x:=Cos(Winkel); y:=Sin(Winkel); x:= x* (Width div 3); y:= y* (Height div 3); x:= x + (Width div 2); y:= y + (Height div 2); xi:= Trunc(x); yi:= Trunc(y); end; Timerroutine :
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var winkel: Integer hour, min, sec, msec: Word; x,y: Integer; begin Refresh; DecodeTime(Now, hour, min, sec, msec); (*Sekundenzeiger*) Berechne_xy(((2*pi)/60)*sec, x, y); Canvas.MoveTo(Width div 2, Height div 2); Canvas.LineTo(x,y); (*Minutenzeiger*) Berechne_xy(((2*pi)/60)*min, x, y); Canvas.MoveTo(Width div 2, Height div 2); Canvas.LineTo(x,y); (*Stundenzeiger*) if hour > 12 then hour := hour - 12; Berechne_xy(((2*pi)/12)*hour, x, y); Canvas.MoveTo(Width div 2, Height div 2); Canvas.LineTo(x,y); end; Wie gesagt aus meinem Delphibuch.. ich übernehme keine verantwortung *g* mfg smk |
Re: Zeigerbewegungen einer Uhr darstellen
Hi Smockey!
Vielen Dank für deinen Quellcode. Leider funzt der bei mir irgendwie nicht. Das Problem: [Fehler] Unit1.pas(47): Ungültige Compileranweisung: 'hour' Hat jemand eine Ahnung, was ich da machen muss? Ich verschicke das Programm auch, wenn ich das allein nicht hinbekomme! :thuimb: Vielen, vielen Dank für die bisherige Hilfe! Es hat mir wirklich schon sehr viel weiter geholfen! :coder: |
Re: Zeigerbewegungen einer Uhr darstellen
Hallo Martha,
Zitat:
mfG mirage228 |
Re: Zeigerbewegungen einer Uhr darstellen
Danke Mirage228! Das war tatsächlich der Fehler! Dass ich da nicht selbst drauf gekommen bin... :wink:
Hi Smokey! Ich muss bei meinem Projekt auch Quellen angeben. Kannst du mir ma bitte den Buchtitel, Autor und Verlag von deinem Delphi-Buch geben??? |
Re: Zeigerbewegungen einer Uhr darstellen
Ich habe nun ein weiteres Problem: Ich muss meine digitale und analoge Uhr per Veerbung von Klassen darstellen, kann mir da jemand helfen?
2. Frage: Kann jemand versuchen, mir mal den Quellcode von den Zeigerbewegungen im Detail zu erklären für meine Präsentation? Danke schon mal im Voraus! 8) |
Re: Zeigerbewegungen einer Uhr darstellen
Für eine neue Frage, erstell bitte einen neunen Thread, danke.
|
Re: Zeigerbewegungen einer Uhr darstellen
Hu, hier die Buchdaten:
Buchtitel: Jetzt lerne ich Delphi Verlag: Markt + Technik Autor: Thomas Binziger mfg Smk |
Re: Zeigerbewegungen einer Uhr darstellen
sorry wenn das jetzt eine dumme Frage ist, aber was für ein Befehl ist denn
berechne_xy ???? Ich arbeite (und das nicht freilwillig ) mit Delphi 5...vielleicht kann ich deswegen nichts damit anfangen? wäre toll wenn mir jemand weiterhelfen könnte? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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