Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
Delphi 7 Enterprise
|
Re: Zeigerbewegungen einer Uhr darstellen
15. Dez 2003, 10:31
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
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
|
|
Zitat
|