Analog Saat Oluşturma — C#
[code lang=”csharp”][/code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;//www.gorselprogramlama.com
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace Analog_Saat
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}//www.gorselprogramlama.com
private void Form1_Load(object sender, EventArgs e)
{
this.ClientSize = new Size(300, 300);
}
private void tmrClock_Tick(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
float r, x_Orta, y_Orta, sx, sy;
r = this.ClientSize.Width / 2; // Orta nokta
g.DrawEllipse(new Pen(Color.Blue, 6), 0, 0, r * 2, r * 2); // Siyah çerçeve
g.FillEllipse(new SolidBrush(this.BackColor), 0, 0, r * 2, r * 2); // İç tema
x_Orta = r; y_Orta = r;//www.gorselprogramlama.com
r -= 8;
int saat, dakika, saniye, aci;
int kx1, kx2, ky1, ky2;
for (aci = 0; aci <= 360; aci += 6)//www.gorselprogramlama.com
{
kx1 = (int)(x_Orta + (r + 8) * Math.Cos(aci * 3.1415 / 180));
ky1 = (int)(y_Orta – (r + 8) * Math.Sin(aci * 3.1415 / 180));
kx2 = (int)(x_Orta + (r) * Math.Cos(aci * 3.1415 / 180));
ky2 = (int)(y_Orta – (r) * Math.Sin(aci * 3.1415 / 180));
if ((aci % 30) == 0)
//Her 30 derecede bir saat başı bulunur. Bunları kalın çiz
g.DrawLine(new Pen(Color.Red, 4), kx1, ky1, kx2, ky2);
else
//Her 6 derecede bir dakika bulunur. Bunları ince çiz
g.DrawLine(new Pen(Color.Blue, 2), kx1, ky1, kx2, ky2);
}
//www.gorselprogramlama.com
GraphicsPath gp = new GraphicsPath();
saat = DateTime.Now.TimeOfDay.Hours;
aci = -saat * 30 + 90; // her saat 30 derecedir
sx = (float)(x_Orta + r * 2 / 2.5 * Math.Cos(aci * 3.1415 / 180));
sy = (float)(y_Orta – r * 2 / 2.5 * Math.Sin(aci * 3.1415 / 180));
kx1 = (int)(x_Orta – 8 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
kx2 = (int)(x_Orta + 8 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
ky1 = (int)(y_Orta + 8 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
ky2 = (int)(y_Orta – 8 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
g.DrawLine(new Pen(Color.Blue, 7), x_Orta, y_Orta, sx, sy);
//www.gorselprogramlama.com
dakika = DateTime.Now.TimeOfDay.Minutes;
aci = -dakika * 6 + 90; // her dakika 60 derecedir
sx = (float)(x_Orta + r * Math.Cos(aci * 3.1415 / 180));
sy = (float)(y_Orta – r * Math.Sin(aci * 3.1415 / 180));
kx1 = (int)(x_Orta – 4 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
kx2 = (int)(x_Orta + 4 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
ky1 = (int)(y_Orta + 4 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
ky2 = (int)(y_Orta – 4 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
g.DrawLine(new Pen(Color.Blue, 7), x_Orta, y_Orta, sx, sy);
//www.gorselprogramlama.com
saniye = DateTime.Now.TimeOfDay.Seconds;
aci = -saniye * 6 + 90; // her saniye 6 derecedir.
sx = (float)(x_Orta + r * Math.Cos(aci * 3.1415 / 180));
sy = (float)(y_Orta – r * Math.Sin(aci * 3.1415 / 180));
kx1 = (int)(x_Orta – 1 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
kx2 = (int)(x_Orta + 1 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));
ky1 = (int)(y_Orta + 1 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
ky2 = (int)(y_Orta – 1 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));
g.DrawLine(new Pen(Color.Red, 7), x_Orta, y_Orta, sx, sy);
/*
gp.AddLine(kx1, ky1, sx, sy);
gp.AddLine(kx2, ky2, sx, sy);
gp.AddLine(kx1, ky1, kx2, ky2);
g.DrawPath(new Pen(Color.Blue, 2), gp);
her biri ( saat dk sn ) için yapılacak
*/
gp.AddEllipse(x_Orta – 8, y_Orta – 8, 16, 16);
g.DrawPath(new Pen(Color.Black, 2), gp);
g.FillPath(new SolidBrush(Color.Black), gp);
g.Dispose();//www.gorselprogramlama.com
gp.Dispose();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(this.BackColor);
} //www.gorselprogramlama.com
}
}
<pre>[/code]


Gerçekten Başarılı bir proje tebrikler