Accueil > > > THREAD, COMPOSANTS DYNAMIQUES, ASTUCES DE WINFORM
THREAD, COMPOSANTS DYNAMIQUES, ASTUCES DE WINFORM
Information sur la source
Description
C'est un petit Soft qui permet d'obtenir un effet d'alpha sur des boutons. J'ai utiliser des thread pour réaliser l'effet et quelque petit manipulation d'évènements et de composants. Pratique pour comprendre les thread et donc le multi-tâche ainsi que les objets dynamiques.
Source
- // Source de la classe CreateButon
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading;
-
- namespace WindowsApplication1
- {
- class CreateButton
- {
- private int Largeur; // Largeur Bouton
- private int Hauteur; // Hauteur Bouton
- private int PositionX; // Position de départ X du bouton
- private int PositionY; // Position de départ Y du bouton
- private int Espacement; // Espacement entre les boutons
- private int NombreDeBoutons; // Le nombre de boutons que l'on veut créer
-
- // L'effet est plus beau quand la couleur de fond et le blanc et
- // la couleur de fond de l'effet une couleur foncée
- private Color CouleurFond; // Couleur de fond de base du bouton
- private Color CouleurFondEffet; // Couleur de fond de l'effet du bouton
- private Color CouleurTexte; // Couleur du texte de base du bouton
- private Color CouleurTexteEffet; // Couleur du texte de l'effet du bouton
-
- private int VitesseEffet; // Vitesse de l'effet
- private int Decrement; // Le pas à pas de l'alpha
-
- string NomBouton; // Le nom du bouton
- string TexteBouton; // Le texte du bouton
-
- Form FormParent; // La form sur la quelle on veut afficher les boutons
-
- EventHandler CliqueSurBouton; // L'évènements des boutons
-
- public CreateButton(int largeur, int hauteur, int positionX, int positionY, int espacement, int nombreDeBoutons, Color couleurFond, Color couleurTexte, Color couleurFondEffet, Color couleurTexteEffet, int vitesseEffet, string nomBouton, string texteBouton, Form formulaireParent, EventHandler cliqueSurBouton)
- {
- // Récupération des paramètres du constructeur
- Largeur = largeur;
- Hauteur = hauteur;
- PositionX = positionX;
- PositionY = positionY;
- Espacement = espacement;
- CouleurFond = couleurFond;
- CouleurFondEffet = couleurFondEffet;
- CouleurTexte = couleurTexte;
- CouleurTexteEffet = couleurTexteEffet;
- VitesseEffet = vitesseEffet;
- Decrement = 30;
- NomBouton = nomBouton;
- TexteBouton = texteBouton;
- FormParent = formulaireParent;
- CliqueSurBouton = cliqueSurBouton;
- NombreDeBoutons = nombreDeBoutons;
- }
- public void Creer()
- {
- // On crée les boutons et on les ajoutes à la form qu'on
- // a passé en paramètres
- for (int i = 0; i < NombreDeBoutons; i++)
- {
- Button LeBouton = new Button();
- LeBouton.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
- LeBouton.Size = new System.Drawing.Size(Largeur, Hauteur);
- LeBouton.Location = new System.Drawing.Point(PositionX, ((Hauteur + Espacement) * i) + PositionY);
- LeBouton.Name = NomBouton + i;
- LeBouton.TabIndex = 0;
- LeBouton.Text = TexteBouton + " " + (i + 1);
- LeBouton.BackColor = CouleurFond;
- LeBouton.ForeColor = CouleurTexte;
- LeBouton.MouseLeave += new System.EventHandler(this.button_MouseLeave);
- LeBouton.Click += new System.EventHandler(CliqueSurBouton);
- LeBouton.MouseEnter += new System.EventHandler(this.button_MouseEnter);
- FormParent.Controls.Add(LeBouton);
- }
- }
- private void button_MouseEnter(object sender, EventArgs e)
- {
- Button Bouton = (Button)sender; // On récupère le bouton
- ChangeAlpha(Bouton, 255); // Appel de la méthode qui permet de changer la couleur et l'alpha
- Bouton.ForeColor = CouleurTexteEffet; // On Change la couleur du texte du bouton
- }
- private void button_MouseLeave(object sender, EventArgs e)
- {
- Button btnSelect = (Button)sender; // On récupère le bouton
- // On instancie un nouveau thread pour pas freezer la form au
- // de l'application de l'effet.
- // ParameterizedThreadStart permet de passer un paramètre au moment
- // de l'appel de la méthide Start
- // Effet est la tâche que l'on veut appeler
- Thread tr = new Thread(new ParameterizedThreadStart(Effet));
- tr.Start(sender); // Appel de la tâche
- }
- private void Effet(object sender)
- {
- // sender est le paramètre que l'on passe. Dans notre cas
- // le bouton
- Button btnSelect = (Button)sender; // On récupère le bouton
- btnSelect.ForeColor = CouleurTexteEffet; // Change la couleur du texte
- for (int i = 255; i >= 0; i -= Decrement) // Boucle qui va décrémenter l'alpha
- {
- ChangeAlpha(btnSelect, i); // Appel de la méthode qui permet de changer la couleur et l'alpha
- Thread.Sleep(VitesseEffet); // On attend un petit coup
- }
- btnSelect.ForeColor = CouleurTexte; // On remet la bonne couleur de texte
- btnSelect.BackColor = CouleurFond; // On remet la bonne couleur de fond
- }
- private void ChangeAlpha(object sender, int alpha)
- {
- Button btnSelect = (Button)sender; // On récupère le bouton
- // On défini la nouvelle couleur avec l'alpha qui diminue
- btnSelect.BackColor = Color.FromArgb(alpha, CouleurFondEffet.R, CouleurFondEffet.G, CouleurFondEffet.B);
- }
- }
- }
// Source de la classe CreateButon
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication1
{
class CreateButton
{
private int Largeur; // Largeur Bouton
private int Hauteur; // Hauteur Bouton
private int PositionX; // Position de départ X du bouton
private int PositionY; // Position de départ Y du bouton
private int Espacement; // Espacement entre les boutons
private int NombreDeBoutons; // Le nombre de boutons que l'on veut créer
// L'effet est plus beau quand la couleur de fond et le blanc et
// la couleur de fond de l'effet une couleur foncée
private Color CouleurFond; // Couleur de fond de base du bouton
private Color CouleurFondEffet; // Couleur de fond de l'effet du bouton
private Color CouleurTexte; // Couleur du texte de base du bouton
private Color CouleurTexteEffet; // Couleur du texte de l'effet du bouton
private int VitesseEffet; // Vitesse de l'effet
private int Decrement; // Le pas à pas de l'alpha
string NomBouton; // Le nom du bouton
string TexteBouton; // Le texte du bouton
Form FormParent; // La form sur la quelle on veut afficher les boutons
EventHandler CliqueSurBouton; // L'évènements des boutons
public CreateButton(int largeur, int hauteur, int positionX, int positionY, int espacement, int nombreDeBoutons, Color couleurFond, Color couleurTexte, Color couleurFondEffet, Color couleurTexteEffet, int vitesseEffet, string nomBouton, string texteBouton, Form formulaireParent, EventHandler cliqueSurBouton)
{
// Récupération des paramètres du constructeur
Largeur = largeur;
Hauteur = hauteur;
PositionX = positionX;
PositionY = positionY;
Espacement = espacement;
CouleurFond = couleurFond;
CouleurFondEffet = couleurFondEffet;
CouleurTexte = couleurTexte;
CouleurTexteEffet = couleurTexteEffet;
VitesseEffet = vitesseEffet;
Decrement = 30;
NomBouton = nomBouton;
TexteBouton = texteBouton;
FormParent = formulaireParent;
CliqueSurBouton = cliqueSurBouton;
NombreDeBoutons = nombreDeBoutons;
}
public void Creer()
{
// On crée les boutons et on les ajoutes à la form qu'on
// a passé en paramètres
for (int i = 0; i < NombreDeBoutons; i++)
{
Button LeBouton = new Button();
LeBouton.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
LeBouton.Size = new System.Drawing.Size(Largeur, Hauteur);
LeBouton.Location = new System.Drawing.Point(PositionX, ((Hauteur + Espacement) * i) + PositionY);
LeBouton.Name = NomBouton + i;
LeBouton.TabIndex = 0;
LeBouton.Text = TexteBouton + " " + (i + 1);
LeBouton.BackColor = CouleurFond;
LeBouton.ForeColor = CouleurTexte;
LeBouton.MouseLeave += new System.EventHandler(this.button_MouseLeave);
LeBouton.Click += new System.EventHandler(CliqueSurBouton);
LeBouton.MouseEnter += new System.EventHandler(this.button_MouseEnter);
FormParent.Controls.Add(LeBouton);
}
}
private void button_MouseEnter(object sender, EventArgs e)
{
Button Bouton = (Button)sender; // On récupère le bouton
ChangeAlpha(Bouton, 255); // Appel de la méthode qui permet de changer la couleur et l'alpha
Bouton.ForeColor = CouleurTexteEffet; // On Change la couleur du texte du bouton
}
private void button_MouseLeave(object sender, EventArgs e)
{
Button btnSelect = (Button)sender; // On récupère le bouton
// On instancie un nouveau thread pour pas freezer la form au
// de l'application de l'effet.
// ParameterizedThreadStart permet de passer un paramètre au moment
// de l'appel de la méthide Start
// Effet est la tâche que l'on veut appeler
Thread tr = new Thread(new ParameterizedThreadStart(Effet));
tr.Start(sender); // Appel de la tâche
}
private void Effet(object sender)
{
// sender est le paramètre que l'on passe. Dans notre cas
// le bouton
Button btnSelect = (Button)sender; // On récupère le bouton
btnSelect.ForeColor = CouleurTexteEffet; // Change la couleur du texte
for (int i = 255; i >= 0; i -= Decrement) // Boucle qui va décrémenter l'alpha
{
ChangeAlpha(btnSelect, i); // Appel de la méthode qui permet de changer la couleur et l'alpha
Thread.Sleep(VitesseEffet); // On attend un petit coup
}
btnSelect.ForeColor = CouleurTexte; // On remet la bonne couleur de texte
btnSelect.BackColor = CouleurFond; // On remet la bonne couleur de fond
}
private void ChangeAlpha(object sender, int alpha)
{
Button btnSelect = (Button)sender; // On récupère le bouton
// On défini la nouvelle couleur avec l'alpha qui diminue
btnSelect.BackColor = Color.FromArgb(alpha, CouleurFondEffet.R, CouleurFondEffet.G, CouleurFondEffet.B);
}
}
}
Conclusion
L'effet n'est pas super si on bouge rapidement la souris. Si vous réussissez à l'optimiser je suis prenant.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Evenement sur un bouton dynamique [ par matlocker ]
bonjour,Je suis tout nouveau en c# et je veux gerer evenement click sur un bouton créé dynamiquement. Mais comment faire ?Je declare mon bou
Composant button [ par scortex84 ]
Bonjour,Je souhaite créer un composant "bouton" personalisé avec par défaut un type flat, une image, et une couleur bien spécifique. Tout ceci pour m'
Exécution Dynamique [ par tmcuh ]
Bonjour suite à un projet j'aurais aimé connaitre la meilleur technique pour exécuter du code dynamiquement. J'ai trouvé un bout de code me permettan
Ajouter un composant en clickant sur un bouton [ par ravomavain ]
Bonjour à tous,J'aimerais ajouter une imge quand on click sur un bouton mias que l'on puisse en ajjouter à l'infinie.Quelequ'un pourait-il m'aiderMerc
bouton police dynamique [ par elfourbos ]
Bonjour,J'ai appris directement la programmation par le technique et maintenant jme rend compte que les petites broutilles sont aussi dur que les gran
Rotation de bouton [ par LordBob ]
Bonsoir a tous,voila en fait je cherche un composant pour mon application mais étant donnée que je ne le trouve pas, je poste un message dans le forum
appel de form dynamique.... [ par parlaciel ]
bonjour à tous!alors je vous expose mon problème qui va certainement vous paraitre balot....Je crée une form à chaque clic sur un bouton.Mais les form
Gif + Thread [ par emmanuel9 ]
Bonjour à tous, J'ai une application qui possède un bouton exporter et les traitement effectué lors de l'appui sur ce bouton gele l'app
clavier et bouton [ par Geometre15 ]
Bonjour!Voici mon probleme : j'utilise un thread dans une fenetre. Ce thread me permet de détecter l'appui sur une touche, comme les fleches par
PrintPreviewDialog [ par Gabberzorus ]
Salut,Je voudrais savoir si l'utilisateur clique sur le bouton imprimer de mon composant PrintPreviewDialog. Est-ce possible? Si oui comment? Quelle e
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|