Winform : control transparent

t00f Messages postés 64 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 23 octobre 2009 - 2 déc. 2008 à 10:46
cs_clairedelune Messages postés 5 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 14 avril 2009 - 14 avril 2009 à 10:20
Bonjour à tous,

Je viens vers vous car j'ai un soucis que je n'arrive pas à résoudre malgré mes recherches sur Internet :

J'essaie de créer un control custom qui possède deux états :
- Etat de départ : Le control n'est pas cliqué, il possède une image transparente ; [Jusque là pas de soucis, je vois bien, en fond, la form qui contient mon control]

- Etat cliqué : Mon control est cliqué et prend une couleur opaque (Ex : Bleu foncé). [Pas de soucis, ma transparence disparait, j'ai mon fond opaque]

Lorsque je relache mon control, il est censé revenir à la position initiale (Transparence de l'image + fond du form qui le contient). Cependant, il garde en mémoire, le fait qu'il avait une couleur bleu juste avant et me fait de la transparence sur cette couleur.

D'après mes recherches, c'est mon graphique qui contient toujours le bleu en arrière plan lorsqu'il retourne dans le paint.  J'ai essayé d'utiliser la méthode Clear(Color) en mettant une couleur vide (Color.empty) mais dans ce cas, j'ai tjrs le fond bleu. Si je met un autre couleur, ca passe, mais je veux pas une autre couleur, je veux ce que j'ai en fond d'écran de ma form :)

Ma question est donc la suivante :
Comment faire pour supprimer le contenu complet de mon graphique avant de le redessiner ?

Des idées ?

Merci d'avance,

A+

3 réponses

xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
3 déc. 2008 à 14:22
Salut,
Essaye de voir du coté de l'event MouseUp qui se déclenche lorsque tu relâche la souris pour initialiser ton contrôle.
A+
0
t00f Messages postés 64 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 23 octobre 2009
3 déc. 2008 à 18:28
Hello,

Devant l'absence de réponse, j'ai continué à chercher une explication à mon problème. Voici des informations supplémentaires à travers un exemple simple et concrêt :

Je crée une Form et je lui ajoute un Control. Lorsque j'essaie de peindre le fond du Form, il me peint uniquement les parties où il n'a pas de controles !
C'est plutôt malin car le WinForm ne fait pas de choses inutiles. Cependant, si mon Control n'a pas de fond, je vais voir à travers le Form.

Un peu de code pour ceux qui adorent :)

public MyControl : Control{

// Mon controle
   protected override OnPaintBackground(PaintEvenArgs e)
   {
    // Pas de fond !
    }

}

static void Main()
{
     // Creation de mes objets
     Form f = new Form();
     MyControl ctrl = new MyControl();
     // Mise en forme du control
     ctrl.Width = f.Width;
     ctrl.Height = 100;
     // Ajout de mon control
     f.Controls.Add(ctrl);
     Application.Run(this.window);
}

Si vous essayé de faire quelque chose comme cela, vous allez voir que :
- la forme s'est dessinée là ou il n'y avait pas de control ;
- on voit le menu d'accueil de windows mobile là ou les controles n'ont pas de fond d'écran...

Question : Comment dessiner derrière un control ?

(On peut mettre faire l'attachement du control dans une surcharge du Paint de la Form, mais cette réponse n'est pas valable :))
0
cs_clairedelune Messages postés 5 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
14 avril 2009 à 10:20
Bonjour toof,
tu as posté ton dernier message il y a si longtemps que je suppose que tu as certainement déjà trouvé une solution mais sait-on jamais ...

essais ceci :

dans le constructeur de ton control ajoute  :
        This.SetStyle(ControlStyles.UserPaint, True)
        This.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
        This.BackColor = Color.Transparent
 ou l'équivalent en C# car je pratique surtout le VB

puis tu gères, comme tu l'as surement fait, les evénement MouseDown et MouseUp du control pour modifier la couleur de fond

On a beau courir, on revient toujours à la source .
0
Rejoignez-nous