using
System; using
System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Analogue_Clock_VCSNet
{
///
<summary>
///
Summary description for Form1.
///
</summary>
public
class AnalogueForm :
System.Windows.Forms.Form
{
private
System.Windows.Forms.Button btndone;
private
System.Windows.Forms.Label label4;
private
System.Windows.Forms.Label label3;
private
System.Windows.Forms.Label label2;
private
System.Windows.Forms.PictureBox pictureBox2;
private
System.Windows.Forms.Label ltime;
private
System.Windows.Forms.Timer timer1;
private
System.Windows.Forms.Timer timer2;
private
System.Windows.Forms.Button btnabout;
private
System.ComponentModel.IContainer components;
// Variables
// Create Rectangle
Rectangle dotclocktrect =
new Rectangle(11,
11, 112, 112);
// Graphic
Graphics ex;
// Structure with an
embedded array.
public
struct ClockTab
{
// circle sin, cos -
table
public
double[] cospi;
public
double[] sinpi;
}
ClockTab DotClockTab =
new ClockTab();
double
clockrect_center_x, clockrect_center_y;
double
dotclocktrect_radius;
int
Position_Second;
int
Position_Minute;
int Position_Hour;
int
oPosition_Second = 59;
int
oPosition_Minute = 59;
int
oPosition_Hour = 11;
public
AnalogueForm()
...
protected
override
void
Dispose( bool
disposing ) ...
Windows Form Designer generated
code |
1
static
void
Main()
{
Application.Run( new
AnalogueForm());
}
private
void
AnalogueForm_Load(object
sender, System.EventArgs e)
{
// Structure with
an embedded array.
// Arrays size
DotClockTab.cospi =
new
double[60];
DotClockTab.sinpi =
new
double[60];
// structure
Values
DotClockTab.cospi[0]= 0;
DotClockTab.sinpi[0]= 1;
DotClockTab.cospi[1]= 0.104528463309328 ;
DotClockTab.sinpi[1]= 0.994521895363893 ;
DotClockTab.cospi[2]= 0.207911690855819 ;
DotClockTab.sinpi[2]= 0.978147600725716 ;
DotClockTab.cospi[3]= 0.309016994409107 ;
DotClockTab.sinpi[3]= 0.951056516284055 ;
DotClockTab.cospi[4]= 0.406736643105878 ;
DotClockTab.sinpi[4]= 0.913545457629209 ;
DotClockTab.cospi[5]= 0.500000000025921 ;
DotClockTab.sinpi[5]= 0.866025403769473 ;
DotClockTab.cospi[6]= 0.587785252314266 ;
DotClockTab.sinpi[6]= 0.809016994359114 ;
DotClockTab.cospi[7]= 0.669130606376653 ;
DotClockTab.sinpi[7]= 0.743144825461372 ;
DotClockTab.cospi[8]= 0.743144825491414 ;
DotClockTab.sinpi[8]= 0.669130606343288 ;
DotClockTab.cospi[9]= 0.809016994385503 ;
DotClockTab.sinpi[9]= 0.587785252277944 ;
DotClockTab.cospi[10]= 0.866025403791921 ;
DotClockTab.sinpi[10]= 0.499999999987039 ;
DotClockTab.cospi[11]= 0.913545457647471 ;
DotClockTab.sinpi[11]= 0.406736643064863 ;
DotClockTab.cospi[12]= 0.951056516297928 ;
DotClockTab.sinpi[12]= 0.309016994366408 ;
DotClockTab.cospi[13]= 0.97814760073505 ;
DotClockTab.sinpi[13]= 0.207911690811904 ;
DotClockTab.cospi[14]= 0.994521895368586 ;
DotClockTab.sinpi[14]= 0.104528463264677 ;
DotClockTab.cospi[15]= 1 ;
DotClockTab.sinpi[15]= 0 ;
DotClockTab.cospi[16]= 0.994521895368586 ;
DotClockTab.sinpi[16]= -0.104528463264677 ;
DotClockTab.cospi[17]= 0.97814760073505 ;
DotClockTab.sinpi[17]= -0.207911690811904 ;
DotClockTab.cospi[18]= 0.951056516297928 ;
DotClockTab.sinpi[18]= -0.309016994366407 ;
DotClockTab.cospi[19]= 0.91354545764747 ;
DotClockTab.sinpi[19]= -0.406736643064863 ;
DotClockTab.cospi[20]= 0.866025403791921 ;
DotClockTab.sinpi[20]= -0.499999999987039 ;
DotClockTab.cospi[21]= 0.809016994385503 ;
DotClockTab.sinpi[21]= -0.587785252277944 ;
DotClockTab.cospi[22]= 0.743144825491414 ;
DotClockTab.sinpi[22]= -0.669130606343288 ;
DotClockTab.cospi[23]= 0.669130606376653 ;
DotClockTab.sinpi[23]= -0.743144825461372 ;
DotClockTab.cospi[24]= 0.587785252314266 ;
DotClockTab.sinpi[24]= -0.809016994359114 ;
DotClockTab.cospi[25]= 0.500000000025921 ;
DotClockTab.sinpi[25]= -0.866025403769473 ;
DotClockTab.cospi[26]= 0.406736643105878 ;
DotClockTab.sinpi[26]= -0.913545457629209 ;
DotClockTab.cospi[27]= 0.309016994409107 ;
DotClockTab.sinpi[27]= -0.951056516284054 ;
DotClockTab.cospi[28]= 0.207911690855819 ;
DotClockTab.sinpi[28]= -0.978147600725716 ;
DotClockTab.cospi[29]= 0.104528463309327 ;
DotClockTab.sinpi[29]= -0.994521895363893 ;
DotClockTab.cospi[30]= 0 ;
DotClockTab.sinpi[30]= -1 ;
DotClockTab.cospi[31]= -0.104528463309328 ;
DotClockTab.sinpi[31]= -0.994521895363893 ;
DotClockTab.cospi[32]= -0.207911690855819 ;
DotClockTab.sinpi[32]= -0.978147600725716 ;
DotClockTab.cospi[33]= -0.309016994409107 ;
DotClockTab.sinpi[33]= -0.951056516284055 ;
DotClockTab.cospi[34]= -0.406736643105878 ;
DotClockTab.sinpi[34]= -0.913545457629209 ;
DotClockTab.cospi[35]= -0.500000000025921 ;
DotClockTab.sinpi[35]= -0.866025403769473 ;
DotClockTab.cospi[36]= -0.587785252314266 ;
DotClockTab.sinpi[36]= -0.809016994359114 ;
DotClockTab.cospi[37]= -0.669130606376653 ;
DotClockTab.sinpi[37]= -0.743144825461372 ;
DotClockTab.cospi[38]= -0.743144825491414 ;
DotClockTab.sinpi[38]= -0.669130606343288 ;
DotClockTab.cospi[39]= -0.809016994385503 ;
DotClockTab.sinpi[39]= -0.587785252277944 ;
DotClockTab.cospi[40]= -0.866025403791921 ;
DotClockTab.sinpi[40]= -0.499999999987039 ;
DotClockTab.cospi[41]= -0.913545457647471 ;
DotClockTab.sinpi[41]= -0.406736643064863 ;
DotClockTab.cospi[42]= -0.951056516297928 ;
DotClockTab.sinpi[42]= -0.309016994366408 ;
DotClockTab.cospi[43]= -0.97814760073505 ;
DotClockTab.sinpi[43]= -0.207911690811904 ;
DotClockTab.cospi[44]= -0.994521895368586 ;
DotClockTab.sinpi[44]= -0.104528463264677 ;
DotClockTab.cospi[45]= -1 ;
DotClockTab.sinpi[45]= 0 ;
DotClockTab.cospi[46]= -0.994521895368586 ;
DotClockTab.sinpi[46]= 0.104528463264677 ;
DotClockTab.cospi[47]= -0.97814760073505 ;
DotClockTab.sinpi[47]= 0.207911690811904 ;
DotClockTab.cospi[48]= -0.951056516297928 ;
DotClockTab.sinpi[48]= 0.309016994366407 ;
DotClockTab.cospi[49]= -0.91354545764747 ;
DotClockTab.sinpi[49]= 0.406736643064863 ;
DotClockTab.cospi[50]= -0.866025403791921 ;
DotClockTab.sinpi[50]= 0.499999999987039 ;
DotClockTab.cospi[51]= -0.809016994385503 ;
DotClockTab.sinpi[51]= 0.587785252277944 ;
DotClockTab.cospi[52]= -0.743144825491414 ;
DotClockTab.sinpi[52]= 0.669130606343288 ;
DotClockTab.cospi[53]= -0.669130606376653 ;
DotClockTab.sinpi[53]= 0.743144825461372 ;
DotClockTab.cospi[54]= -0.587785252314266 ;
DotClockTab.sinpi[54]= 0.809016994359114 ;
DotClockTab.cospi[55]= -0.500000000025921 ;
DotClockTab.sinpi[55]= 0.866025403769473 ;
DotClockTab.cospi[56]= -0.406736643105878 ;
DotClockTab.sinpi[56]= 0.913545457629209 ;
DotClockTab.cospi[57]= -0.309016994409107 ;
DotClockTab.sinpi[57]= 0.951056516284054 ;
DotClockTab.cospi[58]= -0.207911690855819 ;
DotClockTab.sinpi[58]= 0.978147600725716 ;
DotClockTab.cospi[59]= -0.104528463309327 ;
DotClockTab.sinpi[59]= 0.994521895363893 ;
}
// Digital
Clock ...
private
void
timer1_Tick(object
sender, System.EventArgs e)
{
this.ltime.Text=System.DateTime.Now.ToLongTimeString();
}
private
void
btndone_Click(object
sender, System.EventArgs e)
{
Application.Exit();
}
private
void
AnalogueForm_Paint(object
sender, System.Windows.Forms.PaintEventArgs e)
{
// Create pen.
Pen WhitePen =
new Pen(Color.White, 0);
// Graphics
ex = this.CreateGraphics();
// Draw rectangle
to screen.
ex.DrawRectangle(WhitePen, dotclocktrect);
//center of clock
clockrect_center_x = dotclocktrect.Left + (dotclocktrect.Right
- dotclocktrect.Left)/2;
clockrect_center_y = dotclocktrect.Top + (dotclocktrect.Bottom
- dotclocktrect.Top)/2;
// Raduis
dotclocktrect_radius = (clockrect_center_x * 3)/4;
// Paint Clock
PaintClock();
}
// Paint Clock
private
void
PaintClock()
{
SolidBrush NavyBrush =
new
SolidBrush(Color.Navy);
SolidBrush redBrush =
new
SolidBrush(Color.Red);
int
ii;
ex = this.CreateGraphics();
// draw dot
clock
for
(ii = 0; ii < 60; ii++)
{
int
dotclocktrect_Left =
System.Convert.ToUInt16(clockrect_center_x +
dotclocktrect_radius * DotClockTab.cospi[ii]);
int
dotclocktrect_Top =
System.Convert.ToUInt16(clockrect_center_y -
dotclocktrect_radius * DotClockTab.sinpi[ii]);
// dots Navy
ex.FillRectangle(NavyBrush, dotclocktrect_Left,
dotclocktrect_Top, 2,2);
// dots Red
if
(ii == 0 || ii == 5 || ii == 10 || ii == 15 || ii == 20 ||
ii == 25 ||
ii == 30 || ii == 35 || ii == 40 || ii == 45 || ii ==
50 || ii == 55)
ex.FillRectangle(redBrush, dotclocktrect_Left,
dotclocktrect_Top, 3,3);
}
}
// Draw Hands
private
void
DrawHand()
{
int
HOURHAND = 7;
int
WHOURHAND = 10;
int
MINUTEHAND = 9;
int
WMINUTEHAND = 15;
// Pen
Pen hpenBackground =
new
Pen(Color.Black, 1);
Pen hpenForeground =
new
Pen(Color.White, 1);
if
(Position_Second != oPosition_Second)
DrawSecondHand( Position_Second, hpenBackground);
else
DrawSecondHand( Position_Second, hpenForeground);
if
(Position_Minute != oPosition_Minute)
DrawMHHand(Position_Minute, MINUTEHAND, WMINUTEHAND,
hpenBackground);
else
DrawMHHand(Position_Minute, MINUTEHAND, WMINUTEHAND,
hpenForeground);
if
((Position_Hour * 5 + (Position_Minute/12)) != (oPosition_Hour
* 5 + (oPosition_Minute/12)))
DrawMHHand((Position_Hour * 5 + (Position_Minute/12)),
HOURHAND, WHOURHAND, hpenBackground);
else
DrawMHHand((oPosition_Hour * 5 + (oPosition_Minute/12)),
HOURHAND, WHOURHAND, hpenForeground);
if
(Position_Second != oPosition_Second)
DrawSecondHand(oPosition_Second, hpenForeground);
else
DrawSecondHand(oPosition_Second, hpenBackground);
if
(Position_Minute != oPosition_Minute)
DrawMHHand(oPosition_Minute, MINUTEHAND, WMINUTEHAND,
hpenForeground);
else
DrawMHHand(Position_Minute, MINUTEHAND, WMINUTEHAND,
hpenBackground);
if
((Position_Hour * 5 + (Position_Minute/12)) != (oPosition_Hour
* 5 + (oPosition_Minute/12)))
DrawMHHand((oPosition_Hour * 5 + (oPosition_Minute/12)),
HOURHAND, WHOURHAND, hpenForeground);
else
DrawMHHand((Position_Hour * 5 + (Position_Minute/12)),
HOURHAND, WHOURHAND, hpenBackground);
oPosition_Second = Position_Second;
oPosition_Minute = Position_Minute;
oPosition_Hour = Position_Hour;
}
// Draw minute
& hour hand
private
void
DrawMHHand(int
position, int
hand_type, int
width_hand, Pen hPen)
{
int
HQHAND = 7;
ex = this.CreateGraphics();
double
mh_radius;
double
point1_x, point1_y;
double
point2_x, point2_y;
double
point3_x, point3_y;
double
point4_x, point4_y;
mh_radius = ((clockrect_center_x * 3/4) * hand_type)/10;
/***********************************************************************
DESIGN ...
*
point1
*
*
*
*
point4 * * point2
*
point3
**********************************************************************/
point1_x = (clockrect_center_x + ((mh_radius) *
DotClockTab.cospi[position]));
point1_y = (clockrect_center_y - ((mh_radius) *
DotClockTab.sinpi[position]));
point2_x = (clockrect_center_x + ((mh_radius/width_hand)
* DotClockTab.cospi[((position + 15) % 60)]));
point2_y = (clockrect_center_y - ((mh_radius/width_hand)
* DotClockTab.sinpi[((position + 15) % 60)]));
point3_x = (clockrect_center_x + ((mh_radius/HQHAND) *
DotClockTab.cospi[((position + 30) % 60)]));
point3_y = (clockrect_center_y - ((mh_radius/HQHAND) *
DotClockTab.sinpi[((position + 30) % 60)]));
point4_x = (clockrect_center_x + ((mh_radius/width_hand)
* DotClockTab.cospi[((position + 45) % 60)]));
point4_y = (clockrect_center_y - ((mh_radius/width_hand)
* DotClockTab.sinpi[((position + 45) % 60)]));
ex.DrawLine(hPen, System.Convert.ToUInt16(point1_x),
System.Convert.ToUInt16(point1_y),
System.Convert.ToUInt16(point2_x),
System.Convert.ToUInt16(point2_y));
ex.DrawLine(hPen, System.Convert.ToUInt16(point2_x),
System.Convert.ToUInt16(point2_y),
System.Convert.ToUInt16(point3_x),
System.Convert.ToUInt16(point3_y));
ex.DrawLine(hPen, System.Convert.ToUInt16(point3_x),
System.Convert.ToUInt16(point3_y),
System.Convert.ToUInt16(point4_x),
System.Convert.ToUInt16(point4_y));
ex.DrawLine(hPen, System.Convert.ToUInt16(point4_x),
System.Convert.ToUInt16(point4_y),
System.Convert.ToUInt16(point1_x),
System.Convert.ToUInt16(point1_y));
}
// Draw Second
hand
private
void
DrawSecondHand(int
position, Pen hPen)
{
ex = this.CreateGraphics();
double
second_radius;
double
point_x, point_y;
second_radius = (clockrect_center_x * 27)/40;
point_x = clockrect_center_x + second_radius *
DotClockTab.cospi[position];
point_y = clockrect_center_y - second_radius *
DotClockTab.sinpi[position];
ex.DrawLine(hPen, System.Convert.ToUInt16(point_x),
System.Convert.ToUInt16(point_y),
System.Convert.ToUInt16(clockrect_center_x),
System.Convert.ToUInt16(clockrect_center_y));
}
// Analogue Clock
...
private
void
timer2_Tick(object
sender, System.EventArgs e)
{
ex = this.CreateGraphics();
Position_Second = System.DateTime.Now.Second;
Position_Minute = System.DateTime.Now.Minute;
if
(System.DateTime.Now.Hour < 12)
Position_Hour = System.DateTime.Now.Hour ;
else
Position_Hour = System.DateTime.Now.Hour - 12;
// Draw Hands
DrawHand();
}
private
void
btnabout_Click(object
sender, System.EventArgs e)
{
About fabout =
new About();
fabout.Show();
}
}
} |