bool _buttonIsDown = false; protected override void OnMouseUp(MouseEventArgs mevent) { _buttonIsDown = false; base.OnMouseUp(mevent); } protected override void OnMouseDown(MouseEventArgs mevent) { if (mevent.Button == MouseButtons.Left) _buttonIsDown = true; base.OnMouseDown(mevent); } protected override void OnPaint(PaintEventArgs pevent) { //Dessine l'image de fond, si existante if (BackgroundImage != null) pevent.Graphics.DrawImage(BackgroundImage, this.ClientRectangle); else {// sinon on rempli le fond using (SolidBrush backbrush = new SolidBrush(BackColor)) { pevent.Graphics.FillRectangle(backbrush, pevent.ClipRectangle); } } //Dessin de l'image et du texte if (!Enabled) {//disable if (ButtonImageDisable != null) pevent.Graphics.DrawImage(ButtonImageDisable, this.ClientRectangle); } else {//Enable if (_buttonIsDown) {//bouton enfoncé if (ButtonImageDown != null) pevent.Graphics.DrawImage(ButtonImageDown, this.ClientRectangle); } else {//bouton relevé if (ButtonImageUp != null) pevent.Graphics.DrawImage(ButtonImageUp, this.ClientRectangle); } } //Reste à dessiner les bords par dessus l'image //... using (Brush FondBrush = new SolidBrush(Color.FromArgb(236, 233, 216))) { GraphicsPath FondBouton = new GraphicsPath(); FondBouton.AddLine(0, 0, Width-1, 0); FondBouton.AddLine(Width-1, Height-1, Width-1, Height-1); FondBouton.AddLine(Width-1, Height-1, 0, Height-1); FondBouton.AddLine(0, Height-1, 0, 0); pevent.Graphics.DrawPath(Pens.Black, FondBouton); } //Puis le texte if (!Enabled) //Text grisé pevent.Graphics.DrawString(Text, Font, Brushes.Gray, new PointF(0, 0)); else //Text de la couleur prévue using (SolidBrush penbrush = new SolidBrush(ForeColor)) { pevent.Graphics.DrawString(Text, Font, penbrush, new PointF(0, 0)); } } protected override void OnPaintBackground(PaintEventArgs pevent) { }
//CONSTRUCTEUR public UserControlBoutonMenu() { InitializeComponent(); this.Image = new Bitmap("Img\\Fraise à grain A_icone.bmp"); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionprotected override void OnPaint(PaintEventArgs pevent) { Graphics g = pevent.Graphics; Rectangle rect = new Rectangle(0, 0, 85, 61); //Ces lignes définissent le fond du bouton (rectangle plein de couleur) Brush FondBrush new SolidBrush(Color.FromArgb(236, 233, 216)); //On défini ici la couleur (SolidBrush couleur unique. On peut aussi faire des dégradés ou autre ...) FondBouton = new GraphicsPath(); //Le graphicPath contient toutes les données graphiques géométrique FondBouton.AddLine(0, 0, 85, 0); FondBouton.AddLine(85, 61, 85, 61); FondBouton.AddLine(85, 61, 0, 61); FondBouton.AddLine(0, 61, 0, 0); g.FillPath(FondBrush, FondBouton); //Cette ligne sert à afficher le GraphicPath défini ci-dessus, avec la couleur donnée par le SolidBrush //Ces 2 lignes représentent les 2 lignes présentent à l'origine sur les bords haut et gauche du bouton, de couleur plus foncée g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(0, 0), new Point(83, 0)); g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(0, 0), new Point(0, 59)); //Ces 4 lignes représentent le cadre contenant le numéro de touche fonction g.DrawLine(new Pen(Color.Black), new Point(19, 6), new Point(33, 6)); g.DrawLine(new Pen(Color.Black), new Point(34, 7), new Point(34, 15)); g.DrawLine(new Pen(Color.Black), new Point(33, 16), new Point(19, 16)); g.DrawLine(new Pen(Color.Black), new Point(18, 15), new Point(18, 7)); //Cette ligne sert à peindre l'intérieur du cadre ci-dessus en blanc g.DrawLine(new Pen(Color.White, 9), new Point(19, 11), new Point(34, 11)); //On récupère la valeur de texte du bouton pour l'afficher par le biai du labelF this.labelText.Text = this.Text; //On calcule la position du label de manière à la centrer dans le bouton this.labelText.Location = new Point((this.Size.Width - this.labelText.Size.Width) / 2, 25); this.Region = new Region(rect); //this.Size = new Size(85, 61); //On ne donne pas de taille fixe, pour pouvoir l'adapter dans le projet principale (dernier bouton plus court d'un pixel) if (_entered == false) { g.DrawLine(new Pen(Color.FromArgb(236, 233, 216)), new Point(2, 2), new Point(81, 2)); g.DrawLine(new Pen(Color.FromArgb(236, 233, 216)), new Point(2, 57), new Point(2, 2)); g.DrawLine(new Pen(Color.FromArgb(236, 233, 216)), new Point(82, 2), new Point(82, 58)); g.DrawLine(new Pen(Color.FromArgb(236, 233, 216)), new Point(2, 58), new Point(82, 58)); } else { if (_clicked == false) { g.DrawLine(new Pen(Color.White), new Point(2, 2), new Point(81, 2)); g.DrawLine(new Pen(Color.White), new Point(2, 57), new Point(2, 2)); g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(82, 2), new Point(82, 58)); g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(2, 58), new Point(82, 58)); } else { g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(2, 2), new Point(81, 2)); g.DrawLine(new Pen(Color.FromArgb(172, 168, 153)), new Point(2, 57), new Point(2, 2)); g.DrawLine(new Pen(Color.White), new Point(82, 2), new Point(82, 58)); g.DrawLine(new Pen(Color.White), new Point(2, 58), new Point(82, 58)); } } FondBrush.Dispose(); }
[DefaultValue("")] [Localizable(true)] public virtual Image ButtonImageUp { get; set; } [DefaultValue("")] [Localizable(true)] public virtual Image ButtonImageDown { get; set; } [DefaultValue("")] [Localizable(true)] public virtual Image ButtonImageDisable { get; set; }