TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Audrius Gri
NA
5
1.7k
Split class into two classes
Dec 1 2011 9:38 AM
Hello i am trying to make analog clock.
And i want to split my classes. my control class in which is analog clock painting functions and etc... And i want to split this class and to make timer class which would be used by my analogClock class. Is it possible?
That is my code:
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using Timer = System.Windows.Forms.Timer;
namespace AnalogClockControl
{
public class AnalogClock : UserControl
{
public float PI = 3.141592654F; // PI konstanta
private Taimer timerKintamasis; <-- that is parameter by which i am trying to access other class "Taimer"
public DateTime dateTime; // public dateTime kintamasis datai fiksuot
float fRadius; // laipsniai
float fCenterX; // centro koordinates
float fCenterY; // centro koordinates
float fCenterCircleRadius; // centro circle laipsniai
float fHourLength; // valandos ilgis
float fMinLength; // minuciu ilgis
public float fSecLength; // sekundžiu ilgis
float fHourThickness; // valandos rodykles storio parametras
float fMinThickness; // minutes rodykles storio parametras
public float fSecThickness; // sekundess rodykles storio parametras
//chronometro rodykle
public float rodykl;
//žadintuvo rodykle
public float alarmRod;
// Valandiniu brukšniu liniju paišymas
bool bDraw5MinuteTicks = true;
// 60 minuciu brukšniu liniju paišymas
bool bDraw1MinuteTicks = true;
// Tiksejimu rodykliu storis
float fTicksThickness = 1;
// Žadintuvo rodykle parametrai
public string valandos;
// Žadintuvo rodykles parametrai
public string minutes;
Color hrColor = Color.DarkMagenta; // Valandos rodykles spalva
Color minColor = Color.Green; // Minuciu rodykles spalva
Color secColor = Color.Red; // Sekundžiu rodykles spalva
Color circleColor = Color.Red; // Vidurio circle spalva
Color ticksColor = Color.White; // Sekundiniu Tiksejimu rodykles spalva
public Timer timer1; // Laikrodžio taimeris <-- that is timer which i want to move to 'Taimer' class and this class would call it...
public Timer timer2; // Chronometro taimeris
public Timer timer3; // Žadintuvo taimeris
public IContainer components; // Konteineris
// Laikrodyje naudojamu raidžiu/skaitmenu šriftas
Font f = new Font("Calibri", 14, FontStyle.Bold);
public AnalogClock()
{
this.timerKintamasis = timerKintamasis;
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#region Component Designer generated code
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timerKintamasis.timer1 = new System.Windows.Forms.Timer(this.timerKintamasis.components); <- this is call.. new object..
this.timer2 = new System.Windows.Forms.Timer(this.components);
this.timer3 = new System.Windows.Forms.Timer(this.components);
//
// timer1 parametrai (Laikrodžio)
//
//this.timer1.Enabled = true; <-
//this.timer1.Interval = 1000; <- all this stuff would be in 'Taimer' class
//this.timer1.Tick += new System.EventHandler(this.timer1_Tick); <- in constructor there could be just timer1 = enabled.
//
// analoginio laikrodžio sukurimas
//
this.Name = "AnalogClock";
this.Resize += new System.EventHandler(this.AnalogClock_Resize);
this.Load += new System.EventHandler(this.AnalogClock_Load);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.AnalogClock_Paint);
this.Visible = false;
}
#endregion
// Laikrodžio užsikrovimas
private void AnalogClock_Load(object sender, System.EventArgs e)
{
dateTime = DateTime.Now;
this.AnalogClock_Resize(sender, e);
}
// Kiekvieno Tiksejimo valdymas
public void timer1_Tick(object sender, System.EventArgs e)
{
this.dateTime = DateTime.Now;
this.Refresh(); // sitas vis perpaiso
// this.Invalidate();
}
//// Laikrodžio Taimerio valdymas
//public void Start()
//{
// timer1.Enabled = true;
// this.Refresh();
//}
//// Laikrodžio Taimerio valdymas
//public void Stop()
//{
// timer1.Enabled = false;
//}
// Sekundine rodykle
private void DrawLine(float fThickness, float fLength, Color color, float fRadians, PaintEventArgs e)
{
e.Graphics.DrawLine(new Pen(color, fThickness),
fCenterX - (float)(fLength / 9 * Math.Sin(fRadians)),
fCenterY + (float)(fLength / 9 * Math.Cos(fRadians)),
fCenterX + (float)(fLength * Math.Sin(fRadians)),
fCenterY - (float)(fLength * Math.Cos(fRadians)));
}
// Chronometro rodykle
public void DrawLine2(float fThickness, float fLength, Color color, float fRadians, PaintEventArgs e)
{
e.Graphics.DrawLine(new Pen(color, fThickness),
fCenterX - (float)(fLength / 5 * Math.Sin(fRadians)),
fCenterY + (float)(fLength / 5 * Math.Cos(fRadians)),
fCenterX + (float)(fLength * Math.Sin(fRadians)),
fCenterY - (float)(fLength * Math.Cos(fRadians)));
}
public void ChronometroRodyklFunkcija(object sender, EventArgs e)
{
rodykl += 1 / 10F * PI / 180 * 6;
}
public void AlarmClockFunkcija(object sender, EventArgs e)
{
this.dateTime = DateTime.Now;
this.Refresh();
}
// Valandine ir Minutine rodykles
private void DrawPolygon(float fThickness, float fLength, Color color, float fRadians, PaintEventArgs e)
{
PointF A = new PointF((float)(fCenterX + fThickness * 2 * Math.Sin(fRadians + PI / 2)),
(float)(fCenterY - fThickness * 2 * Math.Cos(fRadians + PI / 2)));
PointF B = new PointF((float)(fCenterX + fThickness * 2 * Math.Sin(fRadians - PI / 2)),
(float)(fCenterY - fThickness * 2 * Math.Cos(fRadians - PI / 2)));
PointF C = new PointF((float)(fCenterX + fLength * Math.Sin(fRadians)),
(float)(fCenterY - fLength * Math.Cos(fRadians)));
PointF D = new PointF((float)(fCenterX - fThickness * 4 * Math.Sin(fRadians)),
(float)(fCenterY + fThickness * 4 * Math.Cos(fRadians)));
PointF[] points = { A, D, B, C }; // išdestymas
e.Graphics.FillPolygon(new SolidBrush(color), points); //spalvinimas
}
// Laikrodžio nupaisymas
private void AnalogClock_Paint(object sender, PaintEventArgs e)
{
float fRadHr = (dateTime.Hour % 12 + dateTime.Minute / 60F) * 30 * PI / 180;
float fRadMin = (dateTime.Minute) * 6 * PI / 180;
float fRadSec = (dateTime.Second) * 6 * PI / 180;
DrawPolygon(this.fHourThickness, this.fHourLength, hrColor, fRadHr, e);
DrawPolygon(this.fMinThickness, this.fMinLength, minColor, fRadMin, e);
DrawLine(this.fSecThickness, this.fSecLength, secColor, fRadSec, e);
DrawLine2(this.fSecThickness, this.fSecLength, Color.Blue, alarmRod, e);
DrawLine3(this.fSecThickness, this.fSecLength, Color.Chartreuse, rodykl, e);
for (int i = 0; i < 60; i++) // 60 minuciu
{
for (int j = 1; j <= 12; j++) // valandu skaiciu paišymas
{ // 2.8
e.Graphics.DrawString("" + j, f, Brushes.Red,
Width / 2 + (int)(Width / 3.5 * Math.Sin(j * Math.PI / 6))
- (int)e.Graphics.MeasureString("" + j, f).Width / 2,
Height / 2 - (int)(Height / 3.5 * Math.Cos(j * Math.PI / 6))
- (int)e.Graphics.MeasureString("" + j, f).Height / 2);
}
// Paišo kiekvienos valandos liniju brukšnius
if (this.bDraw5MinuteTicks == true && i % 5 == 0)
{
e.Graphics.DrawLine(new Pen(ticksColor, fTicksThickness),
fCenterX + (float)(this.fRadius / 1.50F * Math.Sin(i * 6 * PI / 180)),
fCenterY - (float)(this.fRadius / 1.50F * Math.Cos(i * 6 * PI / 180)),
fCenterX + (float)(this.fRadius / 1.65F * Math.Sin(i * 6 * PI / 180)),
fCenterY - (float)(this.fRadius / 1.65F * Math.Cos(i * 6 * PI / 180)));
}
else if (this.bDraw1MinuteTicks == true) // paišo minuciu liniju brukšnius
{
e.Graphics.DrawLine(new Pen(ticksColor, fTicksThickness),
fCenterX + (float)(this.fRadius / 1.50F * Math.Sin(i * 6 * PI / 180)),
fCenterY - (float)(this.fRadius / 1.50F * Math.Cos(i * 6 * PI / 180)),
fCenterX + (float)(this.fRadius / 1.55F * Math.Sin(i * 6 * PI / 180)),
fCenterY - (float)(this.fRadius / 1.55F * Math.Cos(i * 6 * PI / 180)));
}
}
//Paišo circle viduryje
e.Graphics.FillEllipse(new SolidBrush(circleColor), fCenterX - fCenterCircleRadius / 2, fCenterY - fCenterCircleRadius / 2, fCenterCircleRadius, fCenterCircleRadius);
}
public void AlarmClockLine()
{
if (Convert.ToInt32(valandos) > 23 || Convert.ToInt32(minutes) > 59)
{
valandos = "0";
minutes = "0";
}
alarmRod = (Convert.ToInt32(valandos) % 12 + Convert.ToInt32(minutes) / 60F) * 30 * PI / 180;
}
// Alarm clock rodykle
public void DrawLine3(float fThickness, float fLength, Color color, float fRadians, PaintEventArgs e)
{
e.Graphics.DrawLine(new Pen(color, fThickness),
fCenterX - (float)(fLength / 9 * Math.Sin(fRadians)),
fCenterY + (float)(fLength / 9 * Math.Cos(fRadians)),
fCenterX + (float)(fLength * Math.Sin(fRadians)),
fCenterY - (float)(fLength * Math.Cos(fRadians)));
}
// Matmenu keitimas
private void AnalogClock_Resize(object sender, EventArgs e)
{
this.Draw1MinuteTicks = true;
this.Draw5MinuteTicks = true;
this.ForeColor = System.Drawing.SystemColors.AppWorkspace;
this.HourHandColor = System.Drawing.Color.DarkGray;
this.Location = new System.Drawing.Point(12, 12);
this.MinuteHandColor = System.Drawing.Color.DarkGray;
this.Name = "analogClock3";
this.SecondHandColor = System.Drawing.Color.BlueViolet;
this.Size = new System.Drawing.Size(402, 402);
this.TabIndex = 2;
this.TicksColor = System.Drawing.Color.Black;
this.Width = this.Height;
//this.Width = Width/2;
//this.Height = Height/2;
this.fRadius = this.Height / 2;
this.fCenterX = this.ClientSize.Width / 2;
this.fCenterY = this.ClientSize.Height / 2;
this.fHourLength = (float)this.Height / 3 / 1.65F;
this.fMinLength = (float)this.Height / 3 / 1.20F;
this.fSecLength = (float)this.Height / 3 / 1.15F;
this.fHourThickness = (float)this.Height / 100;
this.fMinThickness = (float)this.Height / 150;
this.fSecThickness = (float)this.Height / 200;
this.fCenterCircleRadius = this.Height / 50;
this.Refresh();
}
public Color HourHandColor // Valandines rodykles spalva
{
get { return this.hrColor; }
set { this.hrColor = value; }
}
public Color MinuteHandColor // minutines rodykles spalva
{
get { return this.minColor; }
set { this.minColor = value; }
}
public Color SecondHandColor // sekundines rodykles spalva
{
get { return this.secColor; }
set
{
this.secColor = value;
this.circleColor = value;
}
}
public Color TicksColor // tiksejimu rodykles spalva
{
get { return this.ticksColor; }
set { this.ticksColor = value; }
}
public bool Draw1MinuteTicks // geteriai seteriai minutinems linijoms
{
get { return this.bDraw1MinuteTicks; }
set { this.bDraw1MinuteTicks = value; }
}
public bool Draw5MinuteTicks // geteriai seteriai valandinems linijoms
{
get { return this.bDraw5MinuteTicks; }
set { this.bDraw5MinuteTicks = value; }
}
}
}
Reply
Answers (
4
)
Sockets
Destructor method