C#绘制圆形时钟

本文由作者参考部分案例后加以修改完成:

参考链接如下:

http://blog.csdn.net/xuemoyao/article/details/8001113

http://wenku.baidu.com/view/1221d6522f60ddccda38a0e7

(1)     最终效果

(2)程序实现分析:

选用Paint事件进行实现绘制,然后加一个定时器设定为1000毫秒更新一次。

(3)具体方法

在Form窗体(设置大小为300*300),中添加Time1,属性Enabled改为true,Interval设置为1000

然后在Designer.cs中Form1的属性定义下添加

this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);

在Form1.cs中Form1类下添加函数

Private void Form_Paint(Object Sender,PaintEventArgs e)

{

   Graphics g=e.Graphics;      //定义g为该窗体控件的画布    

  int r=100;  

   // 绘制数字时钟

  Rectangle r1=new Rectangle(50,10,200,20);

  //参数分别为左上角矩形坐标,宽度和长度

  g.FillRectangle(Brushes.Chocolate,r1);//填充颜色

  int ss=DateTime.Now.Second;

  int mm=DateTime.Now.Minute;

  int hh=DateTime.Now.Hour;

  String s=Convert.ToString(ss);

  String m=Convert.ToString(mm);

  String h=Convert.ToString(hh);

  if(ss>=0&&ss<=9)

  s=”0”+s;

  if(mm>=0&&mm<=9)

  m=”0”+m;

  if(hh>=0&&hh<=9)

  h=”0”+h;

  Font f1=new Font(“宋体”,12,FontStyle.Bold);

  StringFormat sf1=new StringFormat();

  SolidBrush s1=new SolidBrush(Color.White);

  g.Drawstring(“当前时间”+h+”:”+m+”:”+s,f1,s1,r1,sf1);

  g.DrawString("当前时间  " + h + ":" + m + ":" + s, f1, s1, r1, sf1);

  //绘制圆形轮廓

  g.FillEllipse(Brushes.White,50,50,200,200)

  g.DrawEllipse(New Pen(Color.Red,2),46,46,208,208);

  g.DrawEllipse(new Pen(Color.DarkGray, 1), 50,50, 200, 200);

 //绘制数字刻度

  g.ResetTransform();

  g.TranslateTransform(150, 150);  //重新定位坐标

  Font drawFont = new Font("Arial", 12);

  SolidBrush drawBrush = new SolidBrush(Color.Black);

  e.Graphics.DrawString("6", drawFont, drawBrush,-7,70);

  e.Graphics.DrawString("12", drawFont, drawBrush, -9, -80);

  e.Graphics.DrawString("3", drawFont, drawBrush, 70, -7);

  e.Graphics.DrawString("9", drawFont, drawBrush, -80, -7);

  //绘制刻度

  for (int z = 0; z < 60; z++)

  {

    g.SmoothingMode=System.Drawing.Drawing2D

            .SmoothingMode.HighQuality;   

    //使画出的指针更平滑、高质量

  g.ResetTransform;

  g.TranslateTransform(150,150); //更改坐标原点

 g.RotateYransform(z*5);  //旋转,每一秒旋转6度

 if(z%5==0)

  g=DrawLine(new Pen(Color.Black,3.0f).r-12,0,r-5,0);

      //小时刻度

 else

      g.DrawLine(new Pen(Color.Black,1.5f),r-8,0,r-5,0);

      //分钟标准刻度

}

//绘制秒针

  g.ResetTransform();    //恢复默认状态

  g.TranslateTransform(150,150);

  g.RotateTransform(ss*6+270);

  //以水平线为x轴,从垂直上方开始旋转,每次旋转6度。

   Pen secPen=new Pen(Color.Red,1);

  secPen.StartCap=System.Drawing.Drawing2D.LineCap.RoundAnchor;

   //画线,从圆点开始

  secPen.EndCap=System.Drawing.Drawing2D.LineCap.ArrowAnchor;

  //画线,结束于箭头

  g.DrawLine(secPen,0,0,65,0);//65表示线的长度

  //绘制分针

  g.ResetTransform();

  g.TranslateTransform(150,150);

  g.RotateTransform(mm*6+270);

  Pen minPen=new Pen(Color.Blue,2);

  minPen.StartCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;

minPen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

g.DrawLine(minPen, 0, 0,50 , 0);

//绘制时针

g.ResetTransform();

g.TranslateTransform(150,150);

g.RotateTransform(hh*30+mm*1/2+270);

Pen hourPen = new Pen(Color.Black,3);

hourPen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

g.DrawLine(hourPen, 0, 0, 35, 0);

}

time1的响应事件

private void timer1_Tick(object sender, EventArgs e)

{

  Invalidate();

}

时间: 2024-08-08 01:32:23

C#绘制圆形时钟的相关文章

js绘制圆形时钟

纯js制作圆形时钟 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin:0; padding:0; } body{ background: grey; } .box{ width:320px; height: 320px; borde

使用html5 canvas绘制圆形或弧线

注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链接以了解使用html5 canvas绘制图形的完整内容. 在html5中,CanvasRenderingContext2D对象也提供了专门用于绘制圆形或弧线的方法,请参考以下属性和方法介绍: arc(x, y, radius, startRad, endRad, anticlockwise) 在canvas画

应用canvas绘制动态时钟--每秒自动动态更新时间

使用canvas绘制时钟 下文是部分代码,完整代码参照:https://github.com/lemoncool/canvas-clock,可直接下载. 首先看一下效果图:每隔一秒会动态更新时间 一.前期准备 1. HTML中准备一个容器存放画布,并为其设置width,height. <div> <canvas id="clock" height="200px" width="200px"></canvas>

Breaseman算法绘制圆形|中点算法绘制圆形_程序片段

Breaseman算法绘制圆形|中点算法绘制圆形_程序片段 1. Breaseman算法绘制圆形程序 由于算法的特殊性,限制绘制第一象限部分,其他部分通过旋转绘制. 1 void CCGProjectWorkView::bresenHam_1P4Circle(int radium, const float lineColor[]) 2 { 3 int pointX, pointY, deltD, deltHD, deltDV, direction; 4 pointX = 0; 5 pointY

项目中遇到的问题-2:编译第三方静态库报错、查看静态库的类型、绘制圆形

这一周比较折腾,由于项目应用涉及到和其他产品线APP的互相通信,在高层领导英(yi)明(ta)神(hu)武(tu)的战略指导下,我开始了与其他组同事的联调之旅.这几天鄙司负责产品的上级同事莅临监工,对现在的情况又提出了一些改进,作为一名程序猿,我已经奉上我的双膝... 一.集成公司其他组的.a静态库,报错:duplicate symbole for architectecture i386 XXX  查了一下报错的地方,都是指示.a的库和工程里面某些.m文件冲突,正好同事提到之前有碰到过这种情况

SkylineGlobe 如何实现绘制圆形Polygon和对图层的圆形范围选择查询

//结束绘制圆形之前,得到Polygon var pos = gPolyObj.Position; var bufferR = gPolyObj.Radius; var cVerticesArray = [-122.415025, 37.76059, 10, ]; var point = sgworld.Creator.GeometryCreator.CreatePointGeometry(cVerticesArray); point.X = pos.X; point.Y = pos.Y; po

绘制圆形椭圆

/**绘制圆形*/ CGContextRef contextRef=UIGraphicsGetCurrentContext(); CGContextAddArc(contextRef, 150, 300, 100, 0, 3.14*2, 0); CGContextStrokePath(contextRef); /**绘制椭圆*/ CGContextAddEllipseInRect(contextRef, CGRectMake(50, 400, 200, 100)); CGContextStrok

html5 canvas绘制圆形印章,以及与页面交互

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>HTML5 Canvas画印章</title> 6 <script type="text/javascript" src="../JQmain/jquery-2.2.0.min.js"></script> 7 &l

js在web页面上绘制圆形

在web页面上,想要画出一个圆形,方法有很多,SVG.canvas都可以绘图.但是本文不采用这两种方式,而是使用一个div.div一般是一个矩形,但是如果设置一个圆角样式border-radius就可以将div变成圆形. 圆的位置需要在画布中绝对定位(position: absolute),也就是通过设置X.Y坐标在定位,对应的css样式是left.top.想要圆的绝对定位起效,画布就要设置position:relative. <!DOCTYPE html> <html> <