zoukankan      html  css  js  c++  java
  • C#自定义控件四简易时钟

    C#自定义控件简易时钟

    效果图:

    简易时钟,顾名思义,简单容易,简单到什么程度呢?界面只有数字和指针,甚至连与当前时间都不能匹配!呵呵!就这么简单,学习嘛,从简单开始。

    毫无疑问,这里肯定要用到Timer控件啦,每秒钟刷新界面,这样的话就要求双缓冲啦,你懂的。

    第一步:添加用户控件,命名为myClock。

    第二步:构造函数实例化控件和做双缓冲处理。

    public myClock()

            {

                InitializeComponent();

                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

                this.SetStyle(ControlStyles.DoubleBuffer, true);

                this.SetStyle(ControlStyles.ResizeRedraw, true);

                this.SetStyle(ControlStyles.Selectable, true);

                this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

                this.SetStyle(ControlStyles.UserPaint, true);

                myTimer = new Timer();

                myTimer.Interval = 1000;

                myTimer.Enabled = true;

                myTimer.Tick += new EventHandler(myTimer_Tick);

            }

    第三步:Paint重绘事件

    private void myClock_Paint(object sender, PaintEventArgs e)

            {

                Graphics gra = e.Graphics;//创建一个画板

                /*********************************/

                //表盘上的指针

                using (SolidBrush sb = new SolidBrush(Color.Blue))

                {

                    Font f = new Font("宋体", 18);

                    gra.DrawString("1", f, sb, 195, 20);

                    gra.DrawString("2", f, sb, 235, 60);

                    gra.DrawString("3", f, sb, 250, 123);

                    gra.DrawString("4", f, sb, 235, 183);

                    gra.DrawString("5", f, sb, 195, 225);

                    gra.DrawString("6", f, sb, 125, 245);

                    gra.DrawString("7", f, sb, 55, 225);

                    gra.DrawString("8", f, sb, 15, 183);

                    gra.DrawString("9", f, sb, 0, 123);

                    gra.DrawString("10", f, sb, 15, 60);

                    gra.DrawString("11", f, sb, 55, 20);

                    gra.DrawString("12", f, sb, 125, 0);

                }

                

                //表盘的框架:黑色,宽度是3

                using (Pen p = new Pen(Color.Black, 3))

                {

                    p.DashStyle = DashStyle.Solid;

                    gra.DrawEllipse(p, 0, 0, 270, 270);

                }

                

                //表盘上的三个指针i,j,k;

                using (Pen p1 = new Pen(Color.Red))

                {

                    using (Pen p2 = new Pen(Color.Blue))

                    {

                        using (Pen p3 = new Pen(Color.Yellow))

                        {

                            gra.DrawPie(p3, 20, 20, 230, 230, k, 0.1f);//秒          

                            gra.DrawPie(p2, 30, 30, 210, 210, j, 0.1f);//分

                            gra.DrawPie(p1, 40, 40, 190, 190, i, 0.1f);//小时

                        }

                    }

                }

                

                //指针旋转的代码

                if (i < 360)

                {

                    i += 6;

                    if (i == 270)

                    {

                        if (j <= 360)

                        {

                            j += 6;

                            if (j == 270)

                            {

                                if (k <= 360)

                                {

                                    k += 30;

                                }

                                else

                                {

                                    k = 30;

                                }

                            }

                        }

                        else

                        {

                            j = 6;

                        }

                    }

                }

                else

                {

                    i = 6;

                }

            }

    贴出所有代码:

    //控件名:myClock

    //作者:刘典武

    //时间:2011-06-09

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Drawing;

    using System.Data;

    using System.Text;

    using System.Windows.Forms;

    using System.Drawing.Drawing2D;

    namespace myControl

    {

        public partial class myClock : UserControl

        {

            public myClock()

            {

                InitializeComponent();

                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

                this.SetStyle(ControlStyles.DoubleBuffer, true);

                this.SetStyle(ControlStyles.ResizeRedraw, true);

                this.SetStyle(ControlStyles.Selectable, true);

                this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

                this.SetStyle(ControlStyles.UserPaint, true);

                myTimer = new Timer();

                myTimer.Interval = 1000;

                myTimer.Enabled = true;

                myTimer.Tick += new EventHandler(myTimer_Tick);

            }

            private Timer myTimer;

            //定义三个变量

            float i = 270, j = 270, k = 270;

            private void myTimer_Tick(object sender, EventArgs e)

            {

                this.Invalidate();           

            }

            private void myClock_Paint(object sender, PaintEventArgs e)

            {

                Graphics gra = e.Graphics;//创建一个画板

                /*********************************/

                //表盘上的指针

                using (SolidBrush sb = new SolidBrush(Color.Blue))

                {

                    Font f = new Font("宋体", 18);

                    gra.DrawString("1", f, sb, 195, 20);

                    gra.DrawString("2", f, sb, 235, 60);

                    gra.DrawString("3", f, sb, 250, 123);

                    gra.DrawString("4", f, sb, 235, 183);

                    gra.DrawString("5", f, sb, 195, 225);

                    gra.DrawString("6", f, sb, 125, 245);

                    gra.DrawString("7", f, sb, 55, 225);

                    gra.DrawString("8", f, sb, 15, 183);

                    gra.DrawString("9", f, sb, 0, 123);

                    gra.DrawString("10", f, sb, 15, 60);

                    gra.DrawString("11", f, sb, 55, 20);

                    gra.DrawString("12", f, sb, 125, 0);

                }

                

                //表盘的框架:黑色,宽度是3

                using (Pen p = new Pen(Color.Black, 3))

                {

                    p.DashStyle = DashStyle.Solid;

                    gra.DrawEllipse(p, 0, 0, 270, 270);

                }

                

                //表盘上的三个指针i,j,k;

                using (Pen p1 = new Pen(Color.Red))

                {

                    using (Pen p2 = new Pen(Color.Blue))

                    {

                        using (Pen p3 = new Pen(Color.Yellow))

                        {

                            gra.DrawPie(p3, 20, 20, 230, 230, k, 0.1f);//秒          

                            gra.DrawPie(p2, 30, 30, 210, 210, j, 0.1f);//分

                            gra.DrawPie(p1, 40, 40, 190, 190, i, 0.1f);//小时

                        }

                    }

                }

                

                //指针旋转的代码

                if (i < 360)

                {

                    i += 6;

                    if (i == 270)

                    {

                        if (j <= 360)

                        {

                            j += 6;

                            if (j == 270)

                            {

                                if (k <= 360)

                                {

                                    k += 30;

                                }

                                else

                                {

                                    k = 30;

                                }

                            }

                        }

                        else

                        {

                            j = 6;

                        }

                    }

                }

                else

                {

                    i = 6;

                }

            }        

        }

    }

  • 相关阅读:
    第十四章:(2)Spring Boot 与 分布式 之 Dubbo + Zookeeper
    第十四章:(1)Spring Boot 与 分布式 之 分布式介绍
    第九章:Redis 的Java客户端Jedis
    第十三章:(2)Spring Boot 与 安全 之 SpringBoot + SpringSecurity + Thymeleaf
    第八章:(1)Redis 的复制(Master/Slave)
    java学习
    周末总结4
    java
    Cheatsheet: 2012 12.17 ~ 12.31
    Cheatsheet: 2012 10.01 ~ 10.07
  • 原文地址:https://www.cnblogs.com/feiyangqingyun/p/2097925.html
Copyright © 2011-2022 走看看