Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Dégradé Backcolor ? [ Windows / Formulaire / Winforms / Controls ] (ansizak)

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é dans : backcolor, color, dégradé, lineargradientbrush, paneltest


Répondre à ce message

Sujets en rapport avec ce message

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é 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 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 Equivalent Handles (vb) en Csharp ? [ par ansizak ] Bonjour,Je souhaite effectuer un dégradé sur un de mes panels en m'inspirant du code vb 2005 suivant:[..] toolstrip2_paint(ByVal sender As System.Obje Propriétés et Control personnalisé [ par Claudebf ] Salut à tous------------ Je rencontre deux problèmes liés lors de la conception d'un control personnalisé. Le premier est celui-ci : J'ai des couleurs texture et texte [ par DIMUSERS ] Bonjour à tous, Je rame sur un problème de transparence (c#, direct3D) - Le projet : faire défiler 4 à 5 lignes de texte horizontalement. - Les contra XAML Modifier ResourceDictionary dans le code csharp [ par mfabio1902 ] Bonjour,je débute XAML et je dois modifier en cliquant sur un bouton la couleur de fond (dégradé) de toutes mes fenetres.Toutes mes fenetres ont comme Changer la propriété BackColor d'un controle avec une couleur perso [ par Makia ] Bonjour à tous et voici mon souci ^^J'ai une application qui récupère en permanence la couleur que pointe la souris ( il en ressort un objet de type C


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.