Einzelnen Beitrag anzeigen

Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Zeigerbewegungen einer Uhr darstellen

  Alt 15. Dez 2003, 09: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 !!!
  Mit Zitat antworten Zitat