Thema: Delphi Uhr Programmieren

Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#9

AW: Uhr Programmieren

  Alt 6. Jul 2015, 15:09
@GroZ

Uhr mit Zeigern programmieren hat etwas mit Sinus, Cosinus und Pi zu tun.

Gegeben sind x1 und y1 als Position für Mitte. Indirekt ist noch der Winkel gegeben. Ein voller Kreis hat 360°, ein halber Tag 12 Stunden. Den Winkel für eine Stunde kann man somit mit einem Dreisatz berechnen, genauso wie den für eine Minute und eine Sekunde. Dann ist noch der Radius gegeben (Länge des Zeigers):

Delphi-Quellcode:
var
  al: Integer = 0;

function LineAnglePoint(Canvas: TCanvas; p: TPoint; r: Integer; Angle: Double): TPoint;
begin
  Result.X := p.X + Round(Cos(Angle * Pi / 180) * r);
  Result.Y := p.Y - Round(Sin(Angle * Pi / 180) * r);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  p1, p2: TPoint;
  r,
  x2, y2: Integer;
begin
  p1 := Point(100, 100);
  r := 100;
  Canvas.FillRect(Canvas.ClipRect);
  p2 := LineAnglePoint(Canvas, p1, r, al);
  Canvas.Polyline([p1, p2]);
  Inc(al);
  if al >= 360 then al := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered := True;
  Timer1.Interval := 1;
end;
  Mit Zitat antworten Zitat