Showing posts with label analog. Show all posts
Showing posts with label analog. Show all posts
Sunday, February 15, 2015
C Analog Clock Program
In this tutorial we are going to use a bit of graphics class to design a C# analog clock. We have also used a timer to continuously move our clock’s pointer.
Concept

Instructions
Concept
- We will first initialize some angle values to second, minute, hour hand.
- Then draw the clock using the graphics class, save it as a bitmap variable and load it in the picturebox.
- Finally Use the timer to move the second hand.

Also Read: C/C++ TIC-TAC-TOE GAME
Also Read: Make Analog Clock in C Using Graphics
- Create a new windows form applicaton project in visual c#.
- Add a picture box on the form.
- Double click the form to switch to code view.
- Delete all the existing code and paste the code given below.
C# Analog Clock Program
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AnalogClock
{
public partial class Form1 : Form
{
Timer t = new Timer();
int WIDTH = 300, HEIGHT = 300, secHAND = 140, minHAND = 110, hrHAND = 80;
//center
int cx, cy;
Bitmap bmp;
Graphics g;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//create bitmap
bmp = new Bitmap(WIDTH + 1, HEIGHT + 1);
//center
cx = WIDTH / 2;
cy = HEIGHT / 2;
//backcolor
this.BackColor = Color.White;
//timer
t.Interval = 1000; //in millisecond
t.Tick += new EventHandler(this.t_Tick);
t.Start();
}
private void t_Tick(object sender, EventArgs e)
{
//create graphics
g = Graphics.FromImage(bmp);
//get time
int ss = DateTime.Now.Second;
int mm = DateTime.Now.Minute;
int hh = DateTime.Now.Hour;
int[] handCoord = new int[2];
//clear
g.Clear(Color.White);
//draw circle
g.DrawEllipse(new Pen(Color.Black, 1f), 0, 0, WIDTH, HEIGHT);
//draw figure
g.DrawString("12", new Font("Arial", 12), Brushes.Black, new PointF(140, 2));
g.DrawString("3", new Font("Arial", 12), Brushes.Black, new PointF(286, 140));
g.DrawString("6", new Font("Arial", 12), Brushes.Black, new PointF(142, 282));
g.DrawString("9", new Font("Arial", 12), Brushes.Black, new PointF(0, 140));
//second hand
handCoord = msCoord(ss, secHAND);
g.DrawLine(new Pen(Color.Red, 1f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//minute hand
handCoord = msCoord(mm, minHAND);
g.DrawLine(new Pen(Color.Black, 2f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//hour hand
handCoord = hrCoord(hh % 12, mm, hrHAND);
g.DrawLine(new Pen(Color.Gray, 3f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//load bmp in picturebox1
pictureBox1.Image = bmp;
//disp time
this.Text = "Analog Clock - " + hh + ":" + mm + ":" + ss;
//dispose
g.Dispose();
}
//coord for minute and second hand
private int[] msCoord(int val, int hlen)
{
int[] coord = new int[2];
val *= 6; //each minute and second make 6 degree
if (val >= 0 && val <= 180)
{
coord[0] = cx + (int)(hlen * Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
else
{
coord[0] = cx - (int)(hlen * -Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
return coord;
}
//coord for hour hand
private int[] hrCoord(int hval, int mval, int hlen)
{
int[] coord = new int[2];
//each hour makes 30 degree
//each min makes 0.5 degree
int val = (int)((hval * 30) + (mval * 0.5));
if (val >= 0 && val <= 180)
{
coord[0] = cx + (int)(hlen * Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
else
{
coord[0] = cx - (int)(hlen * -Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
return coord;
}
}
}
Tuesday, February 10, 2015
C Program to create an Analog Clock


#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<process.h>
#include<iostream.h>
int calculatehrs(int h)
{
int x;
switch(h)
{
case 0: x=90;
break;
case 1:
case 13: x=60;
break;
case 2:
case 14: x=30;
break;
case 3:
case 15: x=0;
break;
case 4:
case 16: x=330;
break;
case 5:
case 17: x=300;
break;
case 6:
case 18: x=270;
break;
case 7:
case 19: x=240;
break;
case 8:
case 20: x=210;
break;
case 9:
case 21: x=180;
break;
case 10:
case 22: x=150;
break;
case 11:
case 23: x=120;
break;
case 12:
case 24: x=90;
break;
}
return(x);
}
int calculatemin(int m)
{
int x;
if(m%5==0)
{
switch(m)
{
case 0: x=90;
break;
case 5: x=60;
break;
case 10: x=30;
break;
case 15: x=360;
break;
case 20: x=330;
break;
case 25: x=300;
break;
case 30: x=270;
break;
case 35: x=240;
break;
case 40: x=210;
break;
case 45: x=180;
break;
case 50: x=150;
break;
case 55: x=120;
break;
case 60: x=90;
break;
}
}
else
{
if(m>0&&m<15)
{
switch(m)
{
case 1: x=84;
break;
case 2: x=78;
break;
case 3: x=72;
break;
case 4: x=66;
break;
case 6: x=54;
break;
case 7: x=48;
break;
case 8: x=42;
break;
case 9: x=36;
break;
case 11: x=24;
break;
case 12: x=18;
break;
case 13: x=12;
break;
case 14: x=6;
break;
}
}
if(m>15&&m<30)
{
switch(m)
{
case 16: x=354;
break;
case 17: x=348;
break;
case 18: x=342;
break;
case 19: x=336;
break;
case 21: x=324;
break;
case 22: x=318;
break;
case 23: x=312;
break;
case 24: x=306;
break;
case 26: x=294;
break;
case 27: x=288;
break;
case 28: x=282;
break;
case 29: x=276;
break;
}
}
if(m>30&&m<45)
{
switch(m)
{
case 31: x=264;
break;
case 32: x=258;
break;
case 33: x=252;
break;
case 34: x=246;
break;
case 36: x=234;
break;
case 37: x=228;
break;
case 38: x=222;
break;
case 39: x=216;
break;
case 41: x=204;
break;
case 42: x=198;
break;
case 43: x=192;
break;
case 44: x=186;
break;
}
}
if(m>45&&m<60)
{
switch(m)
{
case 46: x=174;
break;
case 47: x=168;
break;
case 48: x=162;
break;
case 49: x=156;
break;
case 51: x=144;
break;
case 52: x=138;
break;
case 53: x=132;
break;
case 54: x=126;
break;
case 56: x=114;
break;
case 57: x=108;
break;
case 58: x=102;
break;
case 59: x=96;
break;
}
}
}
return(x);
}
int changehrs(int m,int a)
{
if(m>15&&m<=30)
a-=12;
if(m>30&&m<=45)
a-=18;
if(m>45&&m<60)
a-=24;
return (a);
}
void main()
{
int gdriver=DETECT,gmode,h,m,s,a,b,c;
initgraph(&gdriver,&gmode,"c:\tc\bgi");
struct time t;
gettime(&t);
h=t.ti_hour;
m=t.ti_min;
s=t.ti_sec;
a=calculatehrs(h);
b=calculatemin(m);
c=calculatemin(s);
a=changehrs(m,a);
for(int i=a;i>0;i-=6)
for(int j=b;j>0;j-=6)
for(int k=c;k>0;k-=6)
{
setbkcolor(7);
settextstyle(1,HORIZ_DIR,5);
setcolor(BLUE);
outtextxy(190,20,"Analog Clock");
settextstyle(8,HORIZ_DIR,2);
setcolor(BLUE);
circle(300,200,102);
setcolor(YELLOW);
circle(300,200,100);
outtextxy(385,185,"3");
outtextxy(288,98,"12");
outtextxy(207,185,"9");
outtextxy(295,270,"6");
circle(345,123,2);
circle(378,155,2);
circle(378,245,2);
circle(345,280,2);
circle(253,278,2);
circle(223,245,2);
circle(223,155,2);
circle(253,123,2);
setcolor(RED);
pieslice(300,200,i-1,i,75);
setcolor(WHITE);
pieslice(300,200,j-1,j,85);
setcolor(BLUE);
pieslice(300,200,k-1,k,95);
setcolor(RED);
settextstyle(3,HORIZ_DIR,1);
outtextxy(360,400,"Press any key to exit...!!");
sleep(1);
clearviewport();
if(i==6)
a=360;
if(j==6)
b=360;
if(k==6)
c=360;
if(kbhit())
{
setcolor(YELLOW);
setbkcolor(BLUE);
settextstyle(1,HORIZ_DIR,8);
outtextxy(130,150,"Thank You");
sleep(3);
exit(0);
}
}
}
Subscribe to:
Posts (Atom)