Horloge graphique

Soyez le premier à donner votre avis sur cette source.

Vue 31 425 fois - Téléchargée 3 416 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
ericelouan Messages postés 2 Date d'inscription mercredi 30 novembre 2011 Statut Membre Dernière intervention 22 décembre 2011
22 déc. 2011 à 09:41
felicitation champion mais j'ai lesdifficultes a compiler
cs_florian15 Messages postés 11 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 31 janvier 2007
18 janv. 2006 à 08:54
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. ;-)
ekinox17 Messages postés 66 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 janvier 2006
16 janv. 2006 à 15:33
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 !
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
13 janv. 2006 à 18:34
Moqueur... au moins avec Java ils avaient changé le nom, là c'est tout ce qu'il reste.
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
13 janv. 2006 à 16:06
c'est joli le cpp.net :o
Afficher les 6 commentaires

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.