设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> 网络编程 >> ASP.NET >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
变脸:用CSS+JS打造的网…
用CSS实现动态显示的五角…
用css实现文字的自动隐藏
PHP+MySQL应用中使用XOR…
PHP中使用crypt()实现用…
使用C#开发SmartPhone程…
用C#实现智能设备上的No…
用CSS样式表控制鼠标显示…
使用外部CSS设置FlashMX…
使用AJAX技术打造博客无…
  使用C#编写LED样式时钟控件           
使用C#编写LED样式时钟控件
 

 

运行效果:http://blog.csdn.net/images/blog_csdn_net/johnsuna/ClockControl.jpg 右下角图片

//--------------------------(如转载,请保留版权信息)-------------------------//
//   SevenSegmentClockStyle.cs 朱继山 a3news(AT)hotmail.com  --//
// ----------------------------- http://www.brawdraw.com ----------------------//
// -------------------- 未经书面许可,请勿用于商业用途 ---------------------//

using System;

namespace BrawDraw.Com.PhotoFrame.Net.PublicFunctions.Clock
{
 /// <summary>
 /// Clock's Style.时钟的样式定义
 /// </summary>
 public enum SevenSegmentClockStyle
 {
  DateOnly, // 只显示日期
  TimeOnly, // 只显示时间
  DateAndTime //显示日期和时间
 }
}

//--------------------------(如转载,请保留版权信息)-------------------------//
//    SevenSegmentClock.cs  朱继山 a3news(AT)hotmail.com  -------//
// ----------------------------- http://www.brawdraw.com ----------------------//
// -------------------- 未经书面许可,请勿用于商业用途 ---------------------//
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Globalization;
using System.Windows.Forms;
using BrawDraw.Com.PhotoFrame.Net.PublicFunctions;
using System.ComponentModel;

namespace BrawDraw.Com.PhotoFrame.Net.PublicFunctions.Clock
{
//这是控件的关键代码
 public class SevenSegmentClock : UserControl
 {
  DateTime _dateTime;
//默认使用同时绘制日期和时间
  SevenSegmentClockStyle _clockStyle = SevenSegmentClockStyle.DateAndTime;
  Color _clockColor = Color.Black;
//是否绘制阴影(即残影),以摸拟真似的LED时钟
  bool _isDrawShadow = true;

  Timer _timer    = null;
//是否自动更新时间
  bool _isTimerEnable = false;
  Graphics g = null;
  Bitmap m_Bitmap = null;

  public bool IsDrawShadow
  {
   get { return this._isDrawShadow; }
   set
   {
    this._isDrawShadow = value;
    this.Invalidate();
   }
  }

  [Browsable(false)]
  public System.Windows.Forms.Timer Timer
  {
   get { return this._timer; }
   set
   {
    this._timer = value;
    if(_timer != null)
    {
     _timer.Tick    += new EventHandler(TimerOnTick);
    }
   }
  }

  public bool IsTimerEnable
  {
   get { return this._isTimerEnable; }
   set
   {
    if(value == true)
    {
     if(this._timer == null)
     {
      _timer = new Timer();
      _timer.Tick    += new EventHandler(TimerOnTick);
      _timer.Interval = 1000;
      _timer.Enabled  = true;
     }
    }
    else
    {
     if(this._timer != null)
     {
      _timer.Enabled  = false;
     }
    }
    this._isTimerEnable = value;
   }
  }

  public void Start()
  {
   this.IsTimerEnable = true;
   this.Refresh();
  }

  public void Stop()
  {
   this.IsTimerEnable = false;
  }

  public System.DateTime DateTime
  {
   get { return this._dateTime; }
   set { this._dateTime = value; }
  }

//LED文字的颜色
  public System.Drawing.Color ClockColor
  {
   get { return this._clockColor; }
   set
   {
    this._clockColor = value;
    this.Invalidate();
   }
  }

  public SevenSegmentClockStyle SevenSegmentClockStyle
  {
   get { return this._clockStyle; }
   set
   {
    this._clockStyle = value;
    this.Invalidate();
   }
  }

  public SevenSegmentClock()
  {
   Text = "Seven-Segment Clock";
//使用双缓冲,支持透明绘制
   SetStyle(ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint
    | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true);
   this.UpdateStyles();
   Init();
   _dateTime = DateTime.Now;
  }

//初始化
  private void Init()
  {
   m_Bitmap = new Bitmap(this.Width, this.Height);

   g = Graphics.FromImage(m_Bitmap);
   g.CompositingQuality = CompositingQuality.HighQuality;
   g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
   
   //g.InterpolationMode = InterpolationMode.HighQualityBicubic;
   g.SmoothingMode = SmoothingMode.HighQuality;
   //g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
  }

  void TimerOnTick(object obj, EventArgs ea)
  {
   DateTime dtNow = DateTime.Now;
   dtNow = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, dtNow.Hour, dtNow.Minute, dtNow.Second);
   if (dtNow != _dateTime)
   {
    _dateTime = dtNow;
    Invalidate();
   }
  }

  protected override void OnPaint(PaintEventArgs e)
  {
   m_Bitmap = DrawClock();
   Graphics gg = e.Graphics;
   gg.CompositingQuality = CompositingQuality.HighQuality;
   gg.DrawImageUnscaled(m_Bitmap, 0, 0);
   //g.Dispose();
  }

  public Bitmap DrawClock()
  {
   return this.DrawClock(this.ClientRectangle);
  }

  private void SevenSegmentClock_Resize(object sender, System.EventArgs e)
  {
   Init();
   this.Refresh();
  }

  private void InitializeComponent()
  {
   //
   // SevenSegmentClock
   //
   this.Name = "SevenSegmentClock";
   this.Size = new System.Drawing.Size(448, 64);
   this.Resize += new System.EventHandler(this.SevenSegmentClock_Resize);
  }

  int _clockStringWidth;
  int _clockStringHeight;
  public int ClockStringWidth
  {
   get
   {
    return _clockStringWidth;
   }
  }
  
  public int ClockStringHeight
  {
   get
   {
    return _clockStringHeight;
   }
  }

//绘制时钟
  public Bitmap DrawClock(Rectangle destRect)
  {
   m_Bitmap = new Bitmap(destRect.Width, destRect.Height);
   //m_Bitmap = new Bitmap(destRect.X + this.Width, destRect.Y + this.Height);
   Graphics grfx = Graphics.FromImage(m_Bitmap);
//设置绘图面板的绘制质量等
   grfx.CompositingQuality = CompositingQuality.HighQuality;
   grfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
   grfx.SmoothingMode = SmoothingMode.HighQuality;

   SevenSegmentDisplay ssd = new SevenSegmentDisplay(grfx);
   ssd.IsDrawShadow = this._isDrawShadow;
   GraphicsState gs = grfx.Save();
   grfx.TranslateTransform(destRect.X, destRect.Y);
   string strTime = string.Empty;
   if(this._clockStyle == SevenSegmentClockStyle.TimeOnly)
   {
    strTime = _dateTime.ToString("T", DateTimeFormatInfo.InvariantInfo);
   }
   else if(this._clockStyle == SevenSegmentClockStyle.DateOnly)
   {
//设置日期格式
    strTime = _dateTime.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
   }
   else
   {
    strTime = _dateTime.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo) + " " + _dateTime.ToString("T", DateTimeFormatInfo.InvariantInfo);
   }

   SizeF  sizef   = ssd.MeasureString(strTime, Font);
   float  fScale  = Ma

[1] [2] [3] 下一页  

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2006-10-26
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:admin    责任编辑:admin 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持