Calendrier entièrement en gdi+

Description

Voici un petit controle pour palier aux exemples assez insolites que l'on peut trouver sur ce site. Alors, pour éviter d'avoir d'un coté la manière de tracer un trait, de l'autre une forme, tout est réuni ici.

Voici la liste des choses qui sont abordées :

- Dessin en GDI+
- Création d'un control utilisateur de de propriétés
- Utilisation du Double Buffer pour dessiner (cela évite de voir les dessins clignoter)
- Démonstration d'effets en tous genres
- Transitions en Fondu
- Fondu de Texte
- Fondu de couleurs
- Tracé de formes en GDI+
- Tracé de texte en GDI+
- Utilisation des API pour gérer la taille du texte en pixels
- Utilisation des Rectangles
- Gestion des coordonnées relatives pour gérer dynamiquement la position de la
souris lorsqu'elle passe sur un texte

Donc, pour résumer : Ce controle est un controle qui permet d'afficher un Calendrier en GDI. Ce controle s'appuis sur une classe, alors il vous suffit de copier le code du control vers un formulaire, vous pourrez créer ce calendrier mais version "économiseur d'écran". Je le mets entre parenthèses car le GDI+ et le Double Buffer qui redessine en permanence afin de rendre les animations fluides prend des ressources en CPU. Donc, à moins de le programmer en OpenGL ou DirectX, le GDI+ prend beaucoup de ressource (je préfère prévenir pour éviter les remarques ladessus), mais, OpenGL ou DirectX, ce n'était pas l'objet de cette source.

Vous voulez un exemple d'application connue qui est programmée entièrement en GDI+ ? C'est pas compliqué, prennez Safari 3 pour Windows. Le programme bug, l'interface parfois est à moitié en XP/Mac, donc, le GDI+ n'est pas très adapté pour les grosses surfaces. Cependant, pour un petit controle, un bouton, ou ce genre de chose, c'est possible. Pour les grosses animations, préférez WPF.

Comment faire pour lancer ce projet ? Ouvrez le (J'ai utilisé Visual Studio 2005), puis GENEREZ LA SOLUTION AVANT DE COMMENCER A AFFICHER UN FORMULAIRE pour ne pas obtenir l'erreur indiquant que le fichier du controle n'est pas présent (inutile de laisser le répertoire bin pour poster sur le site).

Pour ce qui est des commentaires sur le code, je n'ai pas tout commenté, car le principe de "Boucle de de dessin est toujours le même". En GDI, on programme une boucle (ici en fonction grâce au Timer qui Invalide la zone à chaque milliseconde), ou bien apr une boucle loop par exemple. Vous crééz des variables qui indiquent ce qu'il faut tracer. Ici, j'ai créé un Select Case afin d'afficher la page qu'il convient. Chaque page est dessinée dans une fonction, qui à pour arguments un objet graphique, puis on appelle cette fonction dans l'évènement OnPaint qui à pour PaintEventArg e. Donc, on récupère a fonction dans l'évènement e du OnPaint et le Timer invalide MyBase pour effacer et OnPaint redessine la zone. On applique le double buffer en 2 lignes de code au début du projet et le tour est joué.

PS: La source d'inspiration pour ce controle était le calendrié présent en Widget dans Windows Vista.

Codes Sources

A voir également

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.