- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用C#模拟时钟表一种简单制作方法
使用C#模拟时钟表一种简单制作方法摘 要: 本文利用C#软件中计时器控件和GDI+技术制作出时钟表,并给出相应的源程序。
关键词: C# 模拟时钟表 Graphics
1.GDI+图形库简介
1.1概述
GDI+是Microsoft的新.NET Framework类库用于图形编程,因为它是.NET Framework的一部分,所以也是面对对象的。
1.2设备环境和对象
在GDI+中识别输出设备的方式是使用设备环境DC对象,该对象存储特定设备的信息并能把GDI+API函数调用转换为要发送给该设备的指令,还可以查询设备环境对象,确定对应的设备有什么功能,这样才能据此调整输出结果。
在GDI+中设备环境包装在.NET基类System.Drawing.Graphics中,大多数绘图工作都是调用Graphics的对象完成的。
2.如何利用GDI+绘制时钟表
2.1时钟表的各控件属性的设置
用C#中各控件制作一个指针式的时钟放在桌面上显示的界面。包括1个PictureBox控件、1个Timer控件、1个NotifyIcon控件及StatusStrip控件。
2.2各控件的属性设置
Timer控件的Interval属性值设置为1000,Enable属性值设置为True;窗体的StartPosition属性设置为CenterScreen,这个属性使得钟表在屏幕上中中央显示。
2.3功能实现代码
为实现该时钟表功能,需要设计并输入相应对象相应事件或过程的程序代码。方法是:在设计状态,双击相应控件,或双击控件的某一事件,并输入相应的C#程序代码。
2.4通用声明及时钟表设计方法
在程序中需要有一批变量或常量的定义,可事先在通用声明中完成,代码如下:
const int s_pinlen = 100;//秒针长度
const int m_pinlen = 75; //分针长度
const int h_pinlen = 75; //时针长度
PointF center = new PointF(s_pinlen +3, s_pinlen +3);//中心点位置
SolidBrush sb = new SolidBrush(Color.Black);//时钟圆心的刷子
除上述变量声明外,时钟表功能编写子方法,方法名为:AngleToPos和myClock,
方法AngleToPos是根据角度和百分比计算出一个点的坐标函数,代码如下:
PointF AngleToPos(int angle, float percent)
{
PointF pos = new PointF();
double radian = angle * Math.PI / 180;
pos.Y = center.Y - s_pinlen * percent * (float)Math.Sin(radian);
pos.X = center.X + s_pinlen * percent * (float)Math.Cos(radian);
return pos;
}
方法myClock主要是绘制时钟表的中心位置、秒针、分针及时针的结束位置。代码如下:
Pen pDisk=new Pen(Color.Orange,3);//时钟背景的笔
Pen pScale = new Pen(Color.Coral);//刻度的笔
Graphics myGraphics = pictureBox1.CreateGraphics();
myGraphics.Clear(Color.White);
Pen myPen = new Pen(Color.Black,2);
Point CPoint = new Point(s_pinlen , s_pinlen);
Point SPoint = new Point((int)(CPoint.X + (Math.Sin(6 * s * Math.PI / 180)) * s_pinlen), (int)(CPoint.Y - (Math.Cos(6 * s * Math.PI / 180)) * s_pinlen));
Point MPoint = new Point((int)(CPoint.X + (Math.Sin(6 * m * Math.PI / 180)) * m_pinlen), (int)(CPoint.Y - (Math.Cos(6 * m * Math.PI / 180)) * m_pinlen));
文档评论(0)