要个简单一点的小时钟代码~
c语言时钟代码
FLASH时钟代码
JAVA画时钟代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importsun.util.calendar.Gregorian;
importjava.util.Calendar;
importjava.util.GregorianCalendar;
publicclassClockPointerextendsJFrame{
intx,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,
ss,mm,hh,old_m,old_h,ang;
finaldoubleRAD=Math.PI/180;
publicClockPointer(){
super("Java时钟");
tDefaultCloOperation(JFrame.EXIT_ON_CLOSE);
Imageimage=getToolkit().getImage("clock.gif");
tIconImage(image);
tSize(400,400);
tBackground(Color.white);
//tLocation(300,150);
this.tLocationRelativeTo(null);
tResizable(true);
intdelay=1000;
//创建一个监听事件
tVisible(true);
ActionListenerdrawClock=newActionListener(){
publicvoidactionPerformed(ActionEventevt){
repaint();
}
};
//创建一个时间计数器,每一秒触发一次
newTimer(delay,drawClock).start();
}
java.text.SimpleDateFormatfmTime=newjava.text.SimpleDateFormat("HH:mm:ss");
//绘制图形
publicvoidpaint(Graphicsg){
super.paint(g);
g.tFont(null);
Graphics2Dg2D=(Graphics2D)g;
Intsints=getInts();
intL=ints.left/2,T=ints.top/2;
h=getSize().height;
g.tColor(Color.white);
//画圆
g2D.tStroke(newBasicStroke(2.0f));
g.tColor(Color.gray);
g.drawOval(L+40,T+40,h-80,h-80);
r=h/2-40;
x0=40+r-5+L;
y0=40+r-5-T;
ang=60;
//绘制时钟上的12个字
for(inti=1;i<=12;i++){
x=(int)((r+10)*Math.cos(RAD*ang)+x0);
y=(int)((r+10)*Math.sin(RAD*ang)+y0);
g.tColor(Color.black);
g.drawString(""+i,x,h-y);
ang-=30;
}
//获得现在的时间
Calendarnow=newGregorianCalendar();
intnowh=now.get(Calendar.HOUR_OF_DAY);
intnowm=now.get(Calendar.MINUTE);
intnows=now.get(Calendar.SECOND);
Stringst=fmTime.format(now.getTime());
//在窗体上显示时间
g.tColor(Color.pink);
g.fillRect(L,T,50,28);
g.tColor(Color.blue);
g.drawString(st,L+2,T+26);
//计算时间与度数的关系
ss=90-nows*6;
mm=90-nowm*6;
hh=90-nowh*30-nowm/2;
x0=r+40+L;
y0=r+40+T;
g2D.tStroke(newBasicStroke(1.2f));
//擦除秒针
//if(olds_x>0){
//g.tColor(getBackground());
////g.tColor(Color.gray);
//g.drawLine(x0,y0,olds_x,h-olds_y);//(?)
//}
//绘制秒针
x=(int)(r*0.9*Math.cos(RAD*ss))+x0;
y=(int)(r*0.9*Math.sin(RAD*ss))+y0-2*T;
g.tColor(Color.yellow);
g.drawLine(x0,y0,x,h-y);
olds_x=x;
olds_y=y;
g2D.tStroke(newBasicStroke(2.2f));
//擦除分针
//if(old_m!=mm){
//g.tColor(getBackground());
//g.drawLine(x0,y0,oldm_x,h-oldm_y);
//}
//绘制分针
x=(int)(r*0.7*Math.cos(RAD*mm))+x0;
y=(int)(r*0.7*Math.sin(RAD*mm))+y0-2*T;
g.tColor(Color.green);
g.drawLine(x0,y0,x,h-y);
oldm_x=x;
oldm_y=y;
old_m=mm;
g2D.tStroke(newBasicStroke(3.2f));
//擦除时针
//if(old_h!=hh){
//g.tColor(getBackground());
//g.drawLine(x0,y0,oldh_x,h-oldh_y);
//}
//绘制时针
x=(int)(r*0.5*Math.cos(RAD*hh))+x0;
y=(int)(r*0.5*Math.sin(RAD*hh))+y0-2*T;
g.tColor(Color.red);
g.drawLine(x0,y0,x,h-y);
oldh_x=x;
oldh_y=y;
old_h=hh;
}
publicstaticvoidmain(String[]args){
newClockPointer();
}
}
//整理一下
vb中怎样做出时钟?
VB可使用Timer控件、Line控件和绘图或加载图片等制作指针式时钟。
Timer 控件,通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。
Line 控件,Line 控件是图形控件,它显示水平线、垂直线或者对角线。
运行时不能使用 Move 方法移动 Line 控件,但是可以通过改变 X1、X2、Y1 和 Y2
属性来移动它或者调整它的大小。
Circle 方法,在对象上画圆、椭圆或弧。
以下是通过加载图片的指针式时钟代码:
OptionExplicit
PrivateConstPI=3.1415926
DimX(1)AsSingle,Y(1)AsSingle
DimOriAngleAsSingle,DestAngleAsSingle,rAsSingle
PrivateSubRotateLine(objLAsLine,bsPointXAsSingle,bsPointYAsSingle,RotateAngleAsSingle)
WithobjL
X(0)=.X1
Y(0)=.Y1
X(1)=.X2
Y(1)=.Y2
EndWith
DimiAsInteger
Fori=0To1
IfX(i)-bsPointX<>0Then
OriAngle=Atn((Y(i)-bsPointY)/(X(i)-bsPointX))
El
OriAngle=IIf(Y(i)>bsPointY,PI/2,1.5*PI)
EndIf
IfX(i)-bsPointX<0Then
IfOriAngle<0Then
OriAngle=PI-Abs(OriAngle)
El
OriAngle=PI+Abs(OriAngle)
EndIf
EndIf
DestAngle=OriAngle+RotateAngle
r=Sqr((X(i)-bsPointX)^2+(Y(i)-bsPointY)^2)
X(i)=bsPointX+r*Cos(DestAngle)
Y(i)=bsPointY+r*Sin(DestAngle)
Nexti
WithobjL
.X1=X(0)
.Y1=Y(0)
.X2=X(1)
.Y2=Y(1)
EndWith
EndSub
PrivateSubForm_Load()
Timer1.Interval=1000
DimiAsLong
Fori=1ToVal(Mid(Time$,7,2))
RotateLineLine3,Line3.X1,Line3.Y1,1*PI/30
Next
Fori=1ToVal(Mid(Time$,4,2))
RotateLineLine2,Line2.X1,Line2.Y1,1*PI/30
Next
Fori=1ToVal(Mid(Time$,1,2))*5'对时针
RotateLineLine1,Line1.X1,Line1.Y1,1*PI/30
Next
Fori=1ToVal(Mid(Time$,4,2))'对时针
RotateLineLine1,Line1.X1,Line1.Y1,1*PI/360
Next
EndSub
PrivateSubTimer1_Timer()
RotateLineLine3,Line3.X1,Line3.Y1,1*PI/30
RotateLineLine2,Line2.X1,Line2.Y1,PI/1800
IfMid(Time$,7,2)="00"OrMid(Time$,7,2)="30"Then
RotateLineLine1,Line1.X1,Line1.Y1,1*PI/720
EndIf
Me.Caption=Time$
EndSub
vb 时钟代码
本文发布于:2023-02-28 19:50:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167763760172033.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:时钟代码.doc
本文 PDF 下载地址:时钟代码.pdf
留言与评论(共有 0 条评论) |