最好可以给出例子
解决方案 »
- 程序退出时,弹出错误提示框怎么办?
- 我一个程序用ado+sql server(远程),不知道如何发布,直接拷贝执行文件不行,我看别人做的就一个可执行文件啊!如何解决呢
- 小弟刚来,分不多,请问delphi中如何知道DTS包是否执行完毕?请指点
- 调试问题
- 我想在程序中显示doc文件或htm文件,但是。。。
- 如何获取dbgrid中鼠标点击选定的某一条记录的某一个字段值?
- 请教,如何对一个字符串进行异或校验?
- 这个问题怎么解决啊,我是菜鸟一个!!
- 如何在单元中引用win32的API 函数
- 怎样将声音放入数据库中,及怎样播放?
- 设置FreeOnTerminate:=true,线程结束时是否可以释放自己?
- 如何用时间和日期字段排序?
你说对了,不知道是怎么搞的,可以说仔细一点吗
不知道那个程序有没有代码,我说的是要代码,也可以发布一下吗
// create an instance of the Date object
myDate = new Date();
//
// rotate clock Hands and shadows
hourHand._rotation = myDate.getHours()*30+(myDate.getMinutes()/2);
hourHandShadow._rotation = myDate.getHours()*30+(myDate.getMinutes()/2);
minuteHand._rotation = myDate.getMinutes()*6+(myDate.getSeconds()/10);
minuteHandShadow._rotation = myDate.getMinutes()*6+(myDate.getSeconds()/10);
secondHand._rotation = myDate.getSeconds()*6;
secondHandShadow._rotation = myDate.getSeconds()*6;
};其中hourHand时针
hourHandShadow时针阴影
。。
你试着转换过来就行myDate = new Date();是flash中的一个时间对像,用于获取系统时间,改成delphi中的获取时间函数就可以了
Present:TDateTime;
Hour,Min,Sec:Word;
begin
Present:=now();
DecodeTime(Present,Hour,Min,Sec);showmessage(inttostr(Hour*30+(Min/2));这个就是时钟的角度end;
自己试一下吧!
你是什么意思啊,不懂。能说清楚一点吗?
0秒时为0度
1秒时1*6度
2秒时2*6=12度60秒时60*6=360度=0度不试哪会出成果?真的那么复杂吗?
VERSION 5.00
Begin VB.Form frmClock
BorderStyle = 1 'Fixed Single
Caption = "Clock"
ClientHeight = 3195
ClientLeft = 45
ClientTop = 330
ClientWidth = 4680
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 'Windows Default
Begin VB.Timer tmrClock
Interval = 100
Left = 1800
Top = 1320
End
Begin VB.Line linClock
Index = 0
X1 = 720
X2 = 1200
Y1 = 960
Y2 = 1440
End
End
Attribute VB_Name = "frmClock"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
DefDbl A-Z
Private Sub Form_Load()
Width = 4000
Height = 4000
Left = Screen.Width \ 2 - 4100
Top = (Screen.Height - Height) \ 2
End SubPrivate Sub Form_Resize()
Dim i, Angle
Static Flag As Boolean
If Flag = False Then
Flag = True
For i = 0 To 14
If i > 0 Then
Load linClock(i)
End If
linClock(i).Visible = True
linClock(i).BorderWidth = 5
linClock(i).BorderColor = RGB(0, 128, 0)
Next i
End If
For i = 0 To 14
Scale (-1, -1)-(1, 1)
Angle = i * 2 * Atn(1) / 3
linClock(i).X1 = 0.9 * Cos(Angle)
linClock(i).Y1 = 0.9 * Sin(Angle)
linClock(i).X2 = Cos(Angle)
linClock(i).Y2 = Sin(Angle)
Next i
End SubPrivate Sub tmrClock_Timer()
Const HourHand = 0
Const MinuteHand = 13
Const SecondHand = 14
Dim Angle
Static LastSecond
'Position hands only on the second
If Second(Now) = LastSecond Then Exit Sub
LastSecond = Second(Now)
'Position hour hand
Angle = -0.5236 * (15 - (Hour(Now) + Minute(Now) / 60))
linClock(HourHand).X1 = 0
linClock(HourHand).Y1 = 0
linClock(HourHand).X2 = 0.5 * Cos(Angle)
linClock(HourHand).Y2 = 0.5 * Sin(Angle)
'Position minute hand
Angle = -0.1047 * (75 - (Minute(Now) + Second(Now) / 60))
linClock(MinuteHand).X1 = 0
linClock(MinuteHand).Y1 = 0
linClock(MinuteHand).X2 = 0.7 * Cos(Angle)
linClock(MinuteHand).Y2 = 0.7 * Sin(Angle)
'Position second hand
Angle = -0.1047 * (75 - Second(Now))
linClock(SecondHand).X1 = 0
linClock(SecondHand).Y1 = 0
linClock(SecondHand).X2 = 0.8 * Cos(Angle)
linClock(SecondHand).Y2 = 0.8 * Sin(Angle)
End Sub
昨天闲来无事,自己编了个时钟,已经做好了,不过程序在家的机子上
其实实现起来很容易,给你把大致步骤说一下
1 在一个paintbox1上画时钟盘(60个点)。
2 定义一个tpoint变量,存放时钟盘中心点。
3 时针,分针,秒针各自都有自己的60个点,一共4×60=240个点,分别放在4个tlist中。再new 上 4个指针分别指向这4个tlist。
4 用一个timer来时时读取系统时间,如当前是i:=17秒,即将指针p := list.items[i];从盘中心lineto到此指针所指节点中的坐标,同时别忘了擦掉旧痕迹(paintbox1.canvas.pen.mode:=pmnotxor;)
5 其它两个针以此类推,结果就很象windows的那个圆盘时钟了,以上算法纯属个人发挥,若有更好的算法请不吝指教
至于取60个点的坐标,更容易拉,编个函数,调用后返回一个tlistfunction generate_clock_pan(sol : tpoint; len : integer):tlist;
//sol : tpoint;盘中心点坐标 len : integer 本针的长度
var
list : tlist;
p : ^tpoint;//指向列表的指针
i : integer;
begin
list := tlist.create();
i := 0;
while i<=360 do
begin
new(p);
p.x := len*cos(i*180/pi) + sol.x;
p.y := len*sin(i*180/pi) + sol.y;
i := i + 6; //因为直角是90度的,而90度在钟盘上是15个格子,15分钟
end;
result := list;
end;
哎!写不动了,有空上qq聊,26066541
今天我没有空,明天我给你们加分