Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

как написать часы   Найти похожие ветки 

 
Cukcik   (2003-02-10 12:31) [0]

Люди, кто знает, как написать часы, чтоб были три стрелки


 
Axis_of_Evil ©   (2003-02-10 13:03) [1]

:>


 
Mirovodin ©   (2003-02-10 15:06) [2]

1. Написать функцию которая рисует линию, из точки X,Y длиной D на угол A.

2. Для часовой стрелки a = (360/12)*кол-во часов.
Для минутной стрелки a = (360/60)*кол-во минут
Для секундной стрелки a = (360/60)* кол-во секунд

3. Рисуем круг с центром в X,Y
Соответствие часов, углов на схеме:


0 град 12 часов

|
|
-----|----- 90 град. 3 часа
|
|
|
180 град, 6 часов



 
mukha ©   (2003-02-10 21:56) [3]

Примерно так:
На форме таймер и кнопка. Caption у кнопки - Пуск
Пример из учебника. Всё работает, разбирайся.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure ArrowDraw(DrawColor:TColor);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
CenterX, CenterY, Radius:integer;
HourArrow, MinArrow, SecArrow:integer;
Hour, Min, Sec, MSec:Word;
HourAngle, MinAngle, SecAngle:Real;
Colon:boolean;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.interval:=1000;
timer1.enabled:=false;
centerY:=form1.ClientHeight div 2;
centerX:=centerY;
radius:=centerX-20;
HourArrow:=Radius-50;
MinArrow:=Radius-20;
SecArrow:=Radius-10;
end;

procedure TForm1.FormPaint(Sender: TObject);
var i:integer;
begin
with form1.Canvas do begin
Pen.Color:=clBlue;
pen.Width:=4;
Brush.Color:=clWhite;
Ellipse(20,20,20+2*radius, 20+2*radius);
pen.Width:=2;
for i:=0 to 11 do begin
MoveTo(CenterX+Round((Radius-9)*sin(i/6*pi)),
Centery-Round((Radius-9)*cos(i/6*pi)));
LineTo (CenterX+Round((Radius-9)*sin(i/6*pi)),
CenterY-Round((Radius-9)*cos(i/6*pi)));
end;
Font.Height:=18;
Font.Color:=clBlack;
Brush.Color:=Form1.Color;
textOut(CenterX-TextWidth("12") div 2, CenterY-Radius-textheight("12")-5,"12");
textOut(CenterX+radius+5,CenterY-textheight("3"),"3");
textOut(CenterX-TextWidth("6") div 2,CenterY+Radius+5,"6");
textOut(CenterX-Radius-TextWidth("9")-5,CenterY-textheight("9"),"9");
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption="Старт" then begin
DecodeTime(Time, Hour, Min, Sec,MSec);
HourAngle:=(Hour mod 12)/12*(2*pi);
MinAngle:=Min/60*(2*pi);
SecAngle:=Sec/60*(2*pi);
ArrowDraw(clRed);
Button1.Caption:="Стоп";
Timer1.Enabled:=true;
end
else
begin
Button1.Caption:="Старт";
Timer1.Enabled:=false;
end;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
ArrowDraw(clWhite);
DecodeTime(Time, Hour, Min, Sec,MSec);
HourAngle:=(Hour mod 12)/12*(2*pi);
MinAngle:=Min/60*(2*pi);
SecAngle:=Sec/60*(2*pi);
ArrowDraw(clRed);
end;
procedure TForm1.ArrowDraw(DrawColor:Tcolor);
begin
with Form1.Canvas do begin
pen.Color:=DrawColor;
MoveTo(CenterX, CenterY);
pen.Width:=4;
LineTo(CenterX+Round(HourArrow*sin(HourAngle)),
CenterY-Round(HourArrow*cos(HourAngle)));
MoveTo(CenterX, CenterY);
pen.Width:=2;
LineTo(CenterX+Round(MinArrow*sin(MinAngle)),
CenterY-Round(MinArrow*cos(MinAngle)));
MoveTo(CenterX, CenterY);
pen.Width:=1;
LineTo(CenterX+Round(SecArrow*sin(SecAngle)),
CenterY-Round(SecArrow*cos(SecAngle)));

end;
end;
end.


 
mukha ©   (2003-02-10 21:58) [4]

Извиняюсь: Caption у кнопки - Старт



Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
7-70547
mmmh
2003-03-24 22:24
2003.05.22
Подскажите как извлеч файл из архива который запоролен. То есть


14-70474
vic_vm
2003-05-03 18:05
2003.05.22
Как сделать в ToolBar чтобы названия на кнопках были справа


3-70160
Toshanius
2003-05-02 10:39
2003.05.22
Index is out of date!


3-70164
Skalp
2003-05-02 14:20
2003.05.22
Транзакция


7-70553
Ash
2003-03-24 09:36
2003.05.22
Встраивание приложения