Segue um exemplo usado no Dojo de 06/08/2009, aqui na Produtec.
Não houve tempo de concluí-lo, mas os conceitos básicos estão presentes. No código abaixo, tem somente o corpo básico, mais o ponteiro dos segundos. Fiquem à vontade para concluí-lo.
Para que o exemplo funcione, basta criar um form com ClientHeight e ClientWidth de no mínimo 300 e neste colocar um Timer com parâmetros padrões.
procedure TForm1.Timer1Timer(Sender: TObject);
const
LARGURA = 300;
var
XFinal, YFinal: Integer;
Hora, Minuto, Segundo, MiliSegundo: Word;
Angulo: Integer;
begin
Refresh;
Caption := TimeToStr(Time);
// Disco do Relógio
Canvas.Pen.Width := 1;
Canvas.Brush.Color := clWhite;
Canvas.Brush.Style := bsSolid;
Canvas.Ellipse(0, 0, LARGURA, LARGURA);
// Ponteiros
Canvas.Pen.Style := psSolid;
Canvas.Pen.Width := 3;
Canvas.Pen.Color := clBlack;
Canvas.MoveTo(LARGURA div 2, LARGURA div 2);
DecodeTime(Time, Hora, Minuto, Segundo, Milisegundo);
XFinal := (LARGURA div 2) + Trunc(Sin(DegToRad(180 - Segundo * 6)) * (LARGURA div 2));
YFinal := (LARGURA div 2) + Trunc(Cos(DegToRad(180 - Segundo * 6)) * (LARGURA div 2));
Canvas.LineTo(XFinal, YFinal);
end;
Dúvidas, coloquem a seguir.
Comment