捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:E_Clock 仿真时钟
abcd_ 40072 2010/5/24 11:32:13
问一下,那个“在 Timer 事件里加入 RefClock ”,从哪里添加啊,我找不到诶。各位帮帮忙,在下感激不尽!
ahlkj 23972 2006/5/30 10:02:56
procedure TForm1.RefClock;
var
  oBgCanvas:TBitmap;
begin
  oBgCanvas:=TBitmap.Create;
  oBgCanvas.Height:=Self.Height;
  oBgCanvas.Width:=Self.Width;
//get center point
  cx:=form1.ClientWidth div 2;
  cy:=form1.ClientHeight div 2;
//set radius
  radius:=100;
//set begin end point
  bx:=cx-110;
  by:=cy+110;
  ex:=cx+110;
  ey:=cy-110;
//draw colock face
  //oBgCanvas.Canvas.Rectangle(bx,by,ex,ey);
  oBgCanvas.Canvas.Brush.Style := bsDiagCross;
  oBgCanvas.Canvas.Brush.Color := clAqua;
  oBgCanvas.Canvas.Pen.Width:=5;
  oBgCanvas.Canvas.Pen.Color:=clyellow;
  oBgCanvas.Canvas.Ellipse(bx,by,ex,ey);
  angle:=0;
     for i:=0 to 12 do
     begin
       by:=round(cy-radius*cos(angle*3.14159/180));
       bx:=round(cx+radius*sin(angle*3.14159/180));
       oBgCanvas.Canvas.Pen.Width:=0;
       oBgCanvas.Canvas.Brush.Style := bsSolid;
       oBgCanvas.Canvas.Brush.Color := clred;
       oBgCanvas.Canvas.Ellipse(bx-5,by+5,bx+5,by-5);
     //if word then begin
       oBgCanvas.Canvas.Brush.Style := bsClear;
       oBgCanvas.Canvas.Font.Size:=10;
       oBgCanvas.Canvas.Font.Style:=[fsBold];
       if i<>0 then begin
       if  angle=90 then
          oBgCanvas.Canvas.TextOut(bx-10,by-5,inttostr(i))
       else
       if  angle=270 then
          oBgCanvas.Canvas.TextOut(bx+5,by-5,inttostr(i))
       else
        if (angle>=120) and (angle<=240) then
       begin
         oBgCanvas.Canvas.TextOut(bx-5,by-20,inttostr(i));
       end
       else
         oBgCanvas.Canvas.TextOut(bx-5,by+5,inttostr(i));
       end;
     //end;
       angle:=angle+30;
    end;
 //darw colock handle
       //with paintbox1 do begin
       //s
       DecodeTime(time, Hour, Min, Sec, MSec);
       angle:=2*3.14159*sec/60;
       by:=round(cy-radius*cos(angle));
       bx:=round(cx+radius*sin(angle));
       oBgCanvas.Canvas.Pen.Width:=1;
       oBgCanvas.Canvas.pen.Color:=clblack;
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
       by:=round(cy+20*cos(angle));
       bx:=round(cx-20*sin(angle));
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
       //m
       anglem:=2*3.14159*min/60;
       by:=round(cy-80*cos(anglem));
       bx:=round(cx+80*sin(anglem));
       oBgCanvas.Canvas.Pen.Width:=3;
       oBgCanvas.Canvas.pen.Color:=clblack;
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
       by:=round(cy+10*cos(anglem));
       bx:=round(cx-10*sin(anglem));
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
       //h
       angleh:=2*3.14159*(Hour+min/60)/12;
       by:=round(cy-60*cos(angleh));
       bx:=round(cx+60*sin(angleh));
       oBgCanvas.Canvas.Pen.Width:=5;
       oBgCanvas.Canvas.pen.Color:=clblack;
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
        by:=round(cy+7*cos(angleh));
       bx:=round(cx-7*sin(angleh));
       oBgCanvas.Canvas.MoveTo(cx,cy);
       oBgCanvas.Canvas.LineTo(bx,by);
      //end;

    Self.Canvas.Draw(0,0,oBgCanvas);

    FreeAndNil(oBgCanvas);
end;


在 Timer 事件里加入 RefClock 便可以无闪烁刷新了.
zttztt2002 4197 2004/4/23 16:40:55
有闪烁可以使用双缓冲啊!
sjctheworld 1964 2004/2/2 12:46:21
在论坛里有原码下在
谢谢楼上各位的支持
d_z_x 1951 2004/1/31 18:53:02
不错,界面新颖,美观,但不知运行情况,没看到代码。
wuyudian 1129 2003/12/20 7:58:19
有的地方看不懂,能否加的中文,注释,谢谢!!!!
welldoer 925 2003/12/12 0:44:40
我感觉做得还不错呀!
做事有很多种方式,或好或坏,但做到了就是好;)
zsredmoon 876 2003/12/9 10:38:19
其实作为模拟时钟范例已经足够了。。。不错!!!
zbird 335 2003/10/24 12:19:40
呵呵,
我做了一个电子钟的控件。
可以更换背景,
不过可惜的是不能实现透明。
xuguoguo 223 2003/10/14 16:17:03
嗨,还行呀!鼓!
ayan 209 2003/10/13 10:34:51
OK!
zqc99 88 2003/9/23 12:50:47
太差了
是不是刚学delphi?
第一页 上一页 下一页 最后页 有 12 条纪录 共1页 1 - 12
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表