//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DoubleBuffered=true; //开启双缓冲
ShortDateFormat="yyyy-m-d dddd"; //默认日期格式:年-月-日 星期几
LongTimeFormat="hh:nn:ss.zzz"; //默认时间格式:时:分:秒.毫秒
Edit1->Text=Date().DateString(); //显示年月日
Button1->Click(); //秒表清零
ActiveControl=Button2;
r=Image1->Width/2; //半径
centerX=r; //圆心
centerY=r;
r-=2;
r1=r-13;
r2=r1-14;
r3=(r1+r2)/2;
c=Image1->Canvas;
}
//---------------------------------------------------------------------------
//以窗体背景色刷Image1颜色
void __fastcall TForm1::FormShow(TObject *Sender)
{
c->Brush->Color=this->Color;
c->FillRect(Image1->ClientRect);
Timer1Timer(NULL);
}
//---------------------------------------------------------------------------
//时钟定时器函数每秒执行
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->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);
// 时钟刻度黄色
c->Pen->Width=7;
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+r1*cos(rad);
y1=centerY-r1*sin(rad);
x2=centerX+r2*cos(rad);
y2=centerY-r2*sin(rad);
c->MoveTo(x1,y1);
c->LineTo(x2,y2);
}
// 画秒针(红色)
int angle=((75-sec)%60)*6;
double rad=PI*angle/180;
int x=centerX+r3*cos(rad);
int y=centerY-r3*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();
}
//---------------------------------------------------------------------------