none
Control transparent avec un fond dégradé RRS feed

  • Question

  • Bonjour,

    Développant un lecteur multimedia je voulais embelir un peu le design. Pour cela j'ai voulus crée des dégradés dans le fond de mon application, plus précisement dans des panels. Car mon application est divisé en plusieurs blocs si on peut dire ça comme ça.

    class myPanel : System.Windows.Forms.Panel
        {
            private Color _color1 = Color.White;
            private Color _color2 = Color.Gray;
    
            public myPanel()
            {
    
            }
    
            public Color StartColor
            {
                get { return this._color1; }
                set 
                {
                    this._color1 = value;
                    this.Invalidate();
                }
            }
    
            public Color EndColor
            {
                get { return this._color2; }
                set
                {
                    this._color2 = value;
                    this.Invalidate();
                }
            }
    
            protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
            {
                base.OnPaint(e);
    
                Graphics g = this.CreateGraphics();
                Brush brush = new System.Drawing.Drawing2D.LinearGradientBrush(
                    this.ClientRectangle,
                    this._color1,
                    this._color2,
                    System.Drawing.Drawing2D.LinearGradientMode.Vertical
                );
                Pen stylo = new Pen(ColorTranslator.FromHtml("#3b3b3b"));
    
                g.FillRectangle(brush, this.ClientRectangle);
                g.DrawRectangle(stylo, 0, 0, this.Width - 1, this.Height - 1);
            }
        }


    Donc pour crée mes fond dégradé j'ai surchargé la méthode onPaint des panels, voici ce que ça donne au niveau du code:
    Je dessine un rectange dans mon panel pour faire le dégradé. A l'affichage ça fait ce que je veux, j'en suis satisfait. Le problème est que mes contrôles qui sont sur mon panel eux lorsque je met en couleur de fond transparent ne prenne pas le dégradé. Au lieu je me retrouve avec la couleur de mon Form, ce qui donne un résultat assez moche. Voila ce que ça donne en image:

    http://img441.imageshack.us/img441/2827/aaaaaaaaaaaav.png

    Ma question est donc comment faire pour régler ce problème? Il doit bien exister une solution pour arriver au résultats que je souhaite.

    Je vous remercie d'avance pour votre aide.
    jeudi 12 novembre 2009 14:17

Réponses

  • est-il possible d'exporter sans trop de soucis et difficulté mon projet qui est actuellement en Windows Forms en WPF?

    à mon avis il y a un peu de boulot à faire. mais cela depend aussi de ce que vous voulez faire ... .

    avantages :
    -vous séparez la partie design de la partie développement des commandes liées aux events (en tant que developpeur je dis allélouya, le design c'est pas mon boulot !! )
    -utilisation du design dans une application ou dans une application web 
    -et, si ca vous intéresse le multi touch
    -il y en d'autres certainnement 
     
    et surtout (pour mes dévelloppements)
    vous n'aurez pas à gérer les nombreux classes et  variables que vous devez créer pour implanter l'interface graphique.


    PhD - Student
    vendredi 13 novembre 2009 13:40

Toutes les réponses

  • Salut,

    es-ce que tu as essayé le WPF? Tu pourrais développer des interfaces beaucoup plus intéressantes que dans un projet Windows Forms.


    Microsoft MVP C# :: mongeon.devrpm.ca
    jeudi 12 novembre 2009 14:45
    Modérateur
  • Bonjour,

    J'ai songé à cette eventualité mais est-il possible d'exporter sans trop de soucis et difficulté mon projet qui est actuellement en Windows Forms en WPF?
    Et qu'elle serait les avantages que je pourrais en tirer?
    jeudi 12 novembre 2009 15:12
  • est-il possible d'exporter sans trop de soucis et difficulté mon projet qui est actuellement en Windows Forms en WPF?

    à mon avis il y a un peu de boulot à faire. mais cela depend aussi de ce que vous voulez faire ... .

    avantages :
    -vous séparez la partie design de la partie développement des commandes liées aux events (en tant que developpeur je dis allélouya, le design c'est pas mon boulot !! )
    -utilisation du design dans une application ou dans une application web 
    -et, si ca vous intéresse le multi touch
    -il y en d'autres certainnement 
     
    et surtout (pour mes dévelloppements)
    vous n'aurez pas à gérer les nombreux classes et  variables que vous devez créer pour implanter l'interface graphique.


    PhD - Student
    vendredi 13 novembre 2009 13:40