begin process at 2012 02 11 02:05:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Dégradé Backcolor ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dégradé Backcolor ?

mercredi 12 novembre 2008 à 10:45:14 | Dégradé Backcolor ?

ansizak

Bonjour,

Je n'ai pas réussi à appliquer un dégradé à la propriété backcolor d'un control:

LinearGradientBrush b = new LinearGradientBrush(new Point(0, 0), new Point(60, 20), Color.Gray, Color.White);
Graphics g = paneltest.CreateGraphics();
g.FillRectangle(b, 0, 0, paneltest.Width, paneltest.Height);


Pourriez vous m'aiguiller ?

Merci d'avance,

Anz.
mercredi 12 novembre 2008 à 10:55:58 | Re : Dégradé Backcolor ?

LordOfTheShadow

La propriété BackColor ne prend pas de dégradé en paramètre à moins de réécrire dessus (override) mais ça te sera compliqué et couteux. Le mieux c'est de créer ta propre propriété et de supprimer celle de ton control enfin mettre browsable à false.

La connaissance est la plus grande des richesses.

mercredi 12 novembre 2008 à 10:57:06 | Re : Dégradé Backcolor ?

LordOfTheShadow

Je l'ai déjà en VB, si tu veux je peux te l'envoyer ce soir, la je suis au boulot.

La connaissance est la plus grande des richesses.

mercredi 12 novembre 2008 à 10:59:51 | Re : Dégradé Backcolor ?

ansizak

Je te remercie, je veux bien voir ta propriété vb :)

Je regarderais ce soir.

Merci,
Cordialement,
Anz
mercredi 12 novembre 2008 à 11:24:16 | Re : Dégradé Backcolor ?

WishhhMaster

Salut,

Pour créer un dégradé, tu dériver une nouvelle classe de ton controle et surcharger onPaintBackground:

class MyGradientPanel:Panel
{

Color _color1 = Color.Blue;
Color  _color2 = Color.White;

protected override void OnPaintBackground(PaintEventArgs e)
        {
            base.OnPaintBackground(e);
            Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, ClientRectangle);

            Brush linearGradientBrush = new LinearGradientBrush(new Point(0,0), new Point (60, 20),
 _color1, _color2);
            g.FillRectangle(linearGradientBrush, new Rectangle(0, 0, this.Width, this.Height));

            linearGradientBrush.Dispose();
        }
}
mercredi 12 novembre 2008 à 11:35:04 | Re : Dégradé Backcolor ?

ansizak

Hum, merci à toi, je ne suis pas familier des methode de dérivation...
J'ai essayé ta méthode, et j'obtiens, une erreur "monProjet contient deja une définition pour paneltest"
mercredi 12 novembre 2008 à 11:42:36 | Re : Dégradé Backcolor ?

WishhhMaster

Ton erreur vient du fait que tu déclare 2 fois paneltest. Cherche où (ça n'est pas référencé dans le code que je t'ai donné)
Sinon, essaye d'ajouter la classe de mon message d'avant à ton projet.
Puis après sur ta form, ajoute un panel

MyGradientPanel pnl = new MyGradientPanel();
this.Controls.add(pnl);
pnl.Location = ...
pnl.Size = ..

Normalement tu devrais avoir le panel avec un dégradé :)
mercredi 12 novembre 2008 à 12:43:10 | Re : Dégradé Backcolor ?

ansizak

Hmm.. ok je vois.
Si je procède en créant ton panel MyGradientPanel auquel j'ajoute mon dégradé et qu'ensuite je fais ceci:
paneltest.BackColor = MyGradientPanel.BackColor
aurais-je le dégradé transposé sur mon panel ?


mercredi 12 novembre 2008 à 14:29:29 | Re : Dégradé Backcolor ?

ansizak

En attendant de meiux comprendre les méthodes override, j'ai essayé ceci:

LinearGradientBrush lgb = new LinearGradientBrush(panel6.ClientRectangle, Color.Black, Color.White, LinearGradientMode.Vertical);
                    panel6.CreateGraphics().FillRectangle(lgb, panel6.ClientRectangle);
                    panel6.Refresh();


Cela devrait en théorie fonctionner, or non...
mercredi 12 novembre 2008 à 19:35:56 | Re : Dégradé Backcolor ?

LordOfTheShadow

Alors voila ce que j'ai refais rien que pour toi parce que je le trouvai plus. Tu peux essayer ça sur un nouveau UserControl juste pour tester avant:

using

System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//A RAJOUTER:
using System.Drawing.Drawing2D;

namespace degraderRectangle
{
      publicpartialclassUserControl1 : UserControl
      {
      privateColor couleurUn;
      privateColor couleurDeux;

      public UserControl1()
      {
            InitializeComponent();
      }

[

Category("MesProprietes"), Browsable(true), Description("Obtient ou d,finit le d,grad, du control.")]
publicColor CouleurUn
{
get { return couleurUn; }
set
{
couleurUn =
value;
this.Refresh(); //On lance la proc,dure OnPaint en rafra¼chissant.
}
}

[

Category("MesProprietes"), Browsable(true), Description("Obtient ou d,finit le d,grad, du control.")]
publicColor CouleurDeux
{
get { return couleurDeux; }
set
{
couleurDeux =
value;
this.Refresh(); //On lance la proc,dure OnPaint en rafra¼chissant.
}
}

protectedoverridevoid OnPaint(PaintEventArgs args)
{
Rectangle rect = newRectangle(newPoint(0,0),this.Size);
LinearGradientBrush b = newLinearGradientBrush(newPoint(0, 0), newPoint(this.Size.Width, this.Size.Height), CouleurUn, CouleurDeux);
args.Graphics.FillRectangle(b, rect);
}
}
}
//J'ai mis un peu de temps à le refaire lol mais bon si ça peut t'aider...

La connaissance est la plus grande des richesses.


1 2

Cette discussion est classée dans : backcolor, color, dégradé, lineargradientbrush, paneltest


Répondre à ce message

Sujets en rapport avec ce message

Dégradé sur Label [ par cybers7119 ] Bonjour,Je travaille actuellement en C# sur l'élaboration d'une IHM.Je souhaiterais effectuer un dégradé sur le fond conversion string en color [ par thebigboss ] Salut,voilà j'aimerai sauvegarder l'apparence de mon projet dans un fichier .ini. J'y suis arrivé grace à une class récupérée sur le forum (merci).Le Couleur des ColumnHeader dans un DataGridView [ par egwene ] Salut,j'essaie de formater un dataGridView et j'ai l'impression qu'il est impossible de changer la couleur (BackColor et ForeColor) des cellules d'ent dégradé [ par cudenetf ] Bonjour,j'aimerais faire un dégradé animé,par exemple sur un panel.J'ai donc une fonction qui peint le degradé  Paint( Lineargradient brush ....) et j Ajouter une colonne à un datagrid [ par adressprov ] Voila j'ai déjà poster sur le site d'asp.fr qui m'on renvoyait ici, donc je repose ma question. Voila j'aimerais rajouter une colonne à mon DataGrid color chooser ... ??? [ par VinzRedZone ] Bonjour à tous,J'ai un problème pour lequel je ne trouve pas de réponse.J'aimerais intégrer le colorDialog dans une form ... je ne veux pas ouvrir une changer la couleur d'un label [ par fatal2disease ] je fais une requete vers une bd et suivant la valeur d'un champs le label prend une couleur,  mais j'ai 25 labels je voudrai faire dans une boucle for Dessin dans une cellule d'un DataGridView [ par z_san ] Bonjour Je vous explique mon problème. J'ai une forme qui contien un tab control, chaque onglet représente un jour de la semaine, dans cet onglet o Rotation d'image sans Graphics.RotateTransform [ par nico4nicolas ] Bonjour,Dans le but de faire une application plus étendue, je souhaite faire une rotation d'image sans utiliser Graphics.RotateTransform qui fait pour Redessiner un bouton [ par yanis7518 ] Salut a tousvoila mon probleme je dois redessiner un bouton (je sais c'est pas compliqué mais je suis débutant la dedans :p )en fait mon probleme est


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales