//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const double PI=3.14159265;
int centerX,centerY,r,r1;
TCanvas *c;
TDateTime startTime,elapsedTime;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DoubleBuffered=true; //开启双缓冲
Edit1->Text=Date().DateString(); //显示年月日
LongTimeFormat="hh:nn:ss.zzz"; //默认时间格式:时:分:秒.毫秒
Button1->Click(); //秒表清零
ActiveControl=Button2;
r=Image1->Width/2; //半径
centerX=r; //圆心
centerY=r;
r-=2;
r1=r-20;
c=Image1->Canvas;
}
//---------------------------------------------------------------------------
//时钟定时器函数每秒执行
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
unsigned short hour,min,sec,msec;
TDateTime time=Time(); //现在时间
Edit2->Text=time.FormatString("hh:nn:ss"); //显示时分秒
time.DecodeTime(&hour,&min,&sec,&msec); //解码时、分、秒、毫秒
c->Pen->Width=1;
c->Pen->Color=clBlack;
c->Brush->Style=bsSolid;
c->Brush->Color=clTeal;
c->Ellipse(Image1->ClientRect); //钟面圆青色
c->Brush->Color=clYellow;
c->Ellipse(centerX-10,centerY-10,centerX+10,centerY+10); //钟心黄色小圆
// 时钟刻度黄色
c->Pen->Width=8;
c->Pen->Color=clYellow;
int x1,y1,x2,y2;
for(int i=0,angle=0;i<12;i++,angle+=30)
{
double rad=PI*angle/180;
x1=centerX+r*cos(rad);
y1=centerY-r*sin(rad);
x2=centerX+r1*cos(rad);
y2=centerY-r1*sin(rad);
c->MoveTo(x1,y1);
c->LineTo(x2,y2);
}
// 外圈圆灰色
c->Brush->Style=bsClear;
c->Pen->Color=clGray;
c->Pen->Width=5;
c->Ellipse(centerX-r,centerY-r,centerX+r,centerY+r);
// 黑色矩形
c->Brush->Color=clBlack;
c->FillRect(TRect(centerX-25,centerY-60,centerX+25,centerY-40));
// 灰色品牌ZEC
AnsiString brand="ZEC";
c->Font->Color=clGray;
c->Font->Size=12;
c->Font->Style=TFontStyles()<<fsBold;
c->TextOut(centerX-c->TextWidth(brand)/2,centerY-60,brand);
// 画秒针(红色)
int angle=((75-sec)%60)*6;
double rad=PI*angle/180;
int x=centerX+r1*cos(rad);
int y=centerY-r1*sin(rad);
c->Pen->Color=clRed;
c->Pen->Width=3;
c->MoveTo(centerX,centerY);
c->LineTo(x,y);
}
//---------------------------------------------------------------------------
//秒表清零
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDateTime time=StrToTime("00:00:00.000");
Edit3->Text=time.TimeString();
}
//---------------------------------------------------------------------------
//秒表开始
void __fastcall TForm1::Button2Click(TObject *Sender)
{
startTime=Time();
Timer2->Enabled=true;
}
//---------------------------------------------------------------------------
//秒表停止
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Timer2->Enabled=false;
}
//---------------------------------------------------------------------------
//秒表定时器函数(每50毫秒执行)
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
elapsedTime=Time()-startTime;
Edit3->Text=elapsedTime.TimeString();
}
//---------------------------------------------------------------------------