Horloge graphique

Soyez le premier à donner votre avis sur cette source.

Vue 29 880 fois - Téléchargée 3 008 fois

Description

une belle horloge, créée grâce a la classe Graphics, et réalisée en Visual C++ . net.

Source / Exemple :


#pragma once

namespace Horloge
{
	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	public __gc class Form1 : public System::Windows::Forms::Form
	{	
		const double AngleParHeure;
		const double AngleParMinute;
		double heure;
		double minute;
		double seconde;
		const int marge;
		int rayonX, rayonY;
		Point origine;
	private: System::Windows::Forms::Label *  texteHeure;
	private: System::Windows::Forms::Label *  label1;
	private: System::Windows::Forms::Label *  label2;
	private: System::Windows::Forms::Label *  label3;
	private: System::Windows::Forms::Label *  label4;
	private: System::Windows::Forms::Label *  label5;

	private: System::Timers::Timer *  timer;				 
	public:
		Form1(void) : AngleParHeure(Math::PI / 6.0), AngleParMinute(Math::PI / 6.0 / 5.0), marge(30)
		{
			InitializeComponent();
			heure = minute = seconde = 0;	
			rayonX = ClientSize.Width/2.0 - marge;
			rayonY = ClientSize.Height/2.0 - marge;
			origine.X = ClientSize.Width/2.0;
			origine.Y = ClientSize.Height/2.0;
		}
  
	protected:
		void Dispose(Boolean disposing)
		{
			if (disposing && components)
			{
				components->Dispose();
			}
			__super::Dispose(disposing);
		}

	private:
		
		System::ComponentModel::Container * components;

		
		void InitializeComponent(void)
		{
}
	
	private: System::Void Form1_Paint(System::Object *  sender, System::Windows::Forms::PaintEventArgs *  e)
					 {
						 Graphics *zoneClient = CreateGraphics();
						 Pen *bleu = new Pen(Color::Blue, 4);
						 Pen *vert = new Pen(Color::Green, 4);
						 Pen *rouge =new Pen(Color::Red, 4);
						 Pen *noir =new Pen(Color::Black, 4);
//						 zoneClient->DrawEllipse(bleu, marge, marge, 2*rayonX, 2*rayonY);
						 double AngleHeure = Math::PI/2.0-heure*AngleParHeure;
						 double AngleMinute = Math::PI/2.0-minute*AngleParMinute;
						 double AngleSeconde = Math::PI/2.0-seconde*AngleParMinute;
						 zoneClient->DrawLine(rouge, origine, origine+Point((rayonX-70)*Math::Cos(AngleHeure), -(rayonY-70)*Math::Sin(AngleHeure)));
						 zoneClient->DrawLine(vert, origine, origine+Point((rayonX-30)*Math::Cos(AngleMinute), -(rayonY-30)*Math::Sin(AngleMinute)));
						 zoneClient->DrawLine(bleu, origine, origine+Point(rayonX*Math::Cos(AngleSeconde), -rayonY*Math::Sin(AngleSeconde)));
						 for (int i=0; i<12; i++)
							 	zoneClient->DrawLine(noir, origine+Point((rayonX-10)*Math::Cos(AngleParHeure*i), -(rayonY-10)*Math::Sin(AngleParHeure*i)), origine+Point(rayonX*Math::Cos(AngleParHeure*i), -rayonY*Math::Sin(AngleParHeure*i)));
						 zoneClient->Dispose();
					 }

	private: System::Void timer_Elapsed(System::Object *  sender, System::Timers::ElapsedEventArgs *  e)
					 {
						 DateTime temps = DateTime::get_Now();
						 heure = temps.get_Hour()+temps.get_Minute()/60.0;
						 minute = temps.get_Minute()+temps.get_Second()/60.0;
						 seconde = temps.get_Second();
						 texteHeure->Text = String::Concat(temps.get_Hour().ToString(), S" : ", temps.get_Minute().ToString(), S" : ", seconde.ToString());
						 Invalidate();
					 }

	private: System::Void Form1_Resize(System::Object *  sender, System::EventArgs *  e)
					 {
						 rayonX = ClientSize.Width/2.0 - marge;
						 rayonY = ClientSize.Height/2.0 - marge;
						 origine.X = ClientSize.Width/2.0;
			       origine.Y = ClientSize.Height/2.0;
					 }

};
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
exe est supprimé au téléchargement.
Si tu veux en mettre un, renomme en ex_ par exemple et surtout compile en release.
cs_Alain Proviste
Messages postés
910
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
1 -
c'est joli le cpp.net :o
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
Moqueur... au moins avec Java ils avaient changé le nom, là c'est tout ce qu'il reste.
ekinox17
Messages postés
66
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 janvier 2006
-
Pourquoi en windows form on code toujours dans le .h ?
maintenant ça tient pas debout cette histoire de .cpp pour le code source et le .h pour les declaration : windows form :-> tous dans le .h comme ça on se fait pas ch*** !
nan mais franchement y'a quelqu'un sur le forum qui arrive a declarer des fonctions dans la classe (.h) et de les definir dans le cpp ? en gros y'a des gens ici qui programme vraiment en .net car j'ai l'impression que personne peut m'aider a chaque fois que je parle de .net .... m'enfin je me debrouille tous seul il me faut juste plus de temps ...
ça serait bien de nommer un admin pour le .net ou un gars charger de s'en occupai car c'est clairement laisser a l'abandon sur le forum !
cs_florian15
Messages postés
11
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
31 janvier 2007
-
c'est la philosophie .net de faire la déclaration et la définition dans le .h, c'est sur que ca n'a rien a voir avec nos cours de C++ de Mr Remy http://emmanuel-remy.developpez.com/. Mais bon il n'est pas interdit de définir dans le .cpp.
Par contre l'idée qu'il n'y ait qu'un seul administrateur chargé de ne pas valider les sources comme la mienne, serait un peu dur, car tout le monde n'as pas la perfection en programmation .net, comme toi cher ami.
Bonne continuation et merci de tes remarques. ;-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.