[Delphi] Relógio usando Canvas
2009
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