admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:sql如何用命令创建数据库)

使用C#模拟时钟表的一种简单制作方法

+图形库简介

1.1概述

GDI+是Microsoft的新.NET Framework类库用于图形

编程

,因为它是.NET Framework的一

部分,所以也是面对对象的。

1.2设备环境和对象

在GDI+中识别输出设备的方式是使用设备环境DC对象,该对象存储特定设备的信息并能

把GDI+API函数调用转换为要发送给该设备的指令,还可以查询设备环境对象,确定对应的设

备有什么功能,这样才能据此调整输出结果。

在GDI+中设备环境包装在.NET基类cs中,大多数绘图工作都是调

用Graphics的对象完成的。

2.如何利用GDI+绘制时钟表

2.1时钟表的各控件属性的设置

用C#中各控件制作一个指针式的时钟放在桌面上显示的界面。包括1个PictureBox控件、

1个Timer控件、1个NotifyIcon控件及StatusStrip控件。

2.2各控件的属性设置

Timer控件的Interval属性值设置为1000,Enable属性值设置为True;窗体的StartPosi

tion属性设置为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();//时钟圆心的刷子

除上述变量声明外,时钟表功能编写子方法,方法名为:AngleToPos和myClock,

方法AngleToPos是根据角度和百分比计算出一个点的坐标函数,代码如下:

PointF AngleToPos(int angle, float percent)

{

PointF pos = new PointF();

double radian = angle * / 180;

pos.Y = center.Y - s_pinlen * percent * (float)(radian);

pos.X = center.X + s_pinlen * percent * (float)(radian);

return pos;

}

方法myClock主要是绘制时钟表的中心位置、秒针、分针及时针的结束位置。代码如下:

Pen pDisk=new Pen(,3);//时钟背景的笔

Pen pScale = new Pen();//刻度的笔

Graphics myGraphics = Graphics();

();

Pen myPen = new Pen(,2);

Point CPoint = new Point(s_pinlen , s_pinlen);

Point SPoint = new Point((int)(CPoint.X + ((6 * s * / 180)) *

s_pinlen), (int)(CPoint.Y - ((6 * s * / 180)) * s_pinlen));

Point MPoint = new Point((int)(CPoint.X + ((6 * m * / 180)) *

m_pinlen), (int)(CPoint.Y - ((6 * m * / 180)) * m_pinlen));

Point HPoint = new Point((int)(CPoint.X + ((((30 * h) + (m / 2)) * Ma

/ 180)) * h_pinlen), (int)(CPoint.Y - ((((30 * h) + (m / 2)) * Mat

/ 180)) * h_pinlen));

lipse(sb, center.X -8, center.Y - 7, 14, 14);

ne(myPen, CPoint, SPoint);

myPen = new Pen( , 4);

ne(myPen, CPoint, MPoint);

myPen = new Pen( , 6);

ne(myPen, CPoint, HPoint);


本文标签: 钟表 对象 设备 方法 控件