Commen mettre un Panel transparent ou plutôt qui montre l'image derrière de ma F

Signaler
Messages postés
37
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
28 février 2005
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Commen mettre un Panel transparent ou plutôt qui montre l'image derrière de ma Form ?

J'ai mis un Panel dans ma Form mais ma Form comporte un dégradé, hors le Panel n'est pas transprent, j'ai donc un gros carré bleu qui cache le dégradé ?

J'ai beau cherché sur le net, je ne vois pas comment faire ?

J'ai besoin d'un Panel car j'y inclus d'autres contrôlesdans ce Panel dynamiquement et j'ai besoin d'un scrollbar si il y a trop de contrôle, je pense qu'il n'y a que le Panel qui me montre un ScrollBar ?

Merci
A voir également:

13 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,

Simplement en settant la property BackColor de ton panel à Transparent (c'est le première élément de l'onglet web).
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
premier élément pardon :D
Messages postés
37
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
28 février 2005
1
Ben non tu pense bien que ca, j'aurais su, met sur trasnparent et ca fait rien ! Il n'accepte pas ! J'ai trouvé un moyen de le contourner mais rien, nada !
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Mais si ca marche.... !!!
Messages postés
37
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
28 février 2005
1
Ben franchement, je viens de reesayer et ca ne fonctionne pas !
Je vois pas mon dégradé de ma Form passer dans le Panel ?
J'ai le Framework 1.1
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Je viens d'essayer avec le ramework 1.1, et ça marche, je ne sais pas ce qui ne joue pas chez toi.
Amicalement, SharpMao
Messages postés
37
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
28 février 2005
1
Si vous pouviez juste essayer ceci, incluez ce petit code dans une form, ensuite ajouter un Panel et mettez le transparent, voyez vous le dégradé ? Moi quand je le mets, je vois même plus mon dégradé sur ma form ?

private void PaintGradient()
{
Rectangle rec = new Rectangle(0,0,this.Width,this.Height);
LinearGradientBrush _brush = new LinearGradientBrush(rec,Color.SkyBlue,Color.DarkBlue,LinearGradientMode.BackwardDiagonal);
Graphics e = this.CreateGraphics();
e.FillRectangle(_brush,rec);
e.Dispose();
_brush.Dispose();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
PaintGradient();
}
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
en fait ça te permet de voir le fond du form par transparence, toi tu dessines sur le form
SharpMao à du tester en mettant une image de fond, ou une couleur

une solution pourrait etre de dessiner sur un bitmap de la taille de ton form, puis de l'affecter en tant que BackgroundImage du form
maintenant a verifier : ce que ça implique niveau ressources

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Au niveau ressource ce qu'il y a de plus performant que de repainter un background c'est de créer une image de l'affecter en background. Et de la repainter que lorsque l'image doit être modifier, lorsque par exemple on a un texte d'affiché.

On y gagne en performance visuelle et en gestion de mémoire.

::|The S@ib|::
MVP C#.NET
Messages postés
37
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
28 février 2005
1
Tu aurais un exemple d code ?
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Bah ce n'est pas compliquer

Dans ton paint tu testes un booleen

if (mustRepaint)
{
tu paints dans le background;
DrawTitle(Title);
mustRepaint = false;
}

Et chaque fois que tu as besoin de redessiner tu met mustRepaint a true;

exemple avec un titre

string _title;
public String Title
{
get{return _title;}
set {
_title=value;
mustRepaint = true;
}
}

::|The S@ib|::
MVP C#.NET
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
qqch de ce genre là :

private Bitmap m_backgroundBmp;

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
// si l'image n'est pas encore dessinée ou si la taille a changer
if ( m_backgroundBmp == null || m_backgroundBmp.Size != new Size(this.Width, this.Height) )
PaintGradient();
}

private void PaintGradient()
{
Rectangle rec = new Rectangle(0,0,this.Width,this.Height);

if ( m_backgroundBmp == null )
{
// premier dessin de l'image
m_backgroundBmp = new Bitmap(rec.Size.Width, rec.Size.Height);
}
else
{
// changement de taille
m_backgroundBmp.Dispose();
m_backgroundBmp = new Bitmap(rec.Size.Width, rec.Size.Height);
}

// dessin
LinearGradientBrush _brush = new LinearGradientBrush(rec,Color.SkyBlue,Color.DarkBlue,LinearGradientMode.BackwardDiagonal);
Graphics e = Graphics.FromImage(m_backgroundBmp);
e.FillRectangle(_brush,rec);
e.Dispose();
_brush.Dispose();
this.BackgroundImage = m_backgroundBmp;
}


Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
arf, me suis encore fait avoir par l'actualisation :)

Cocoricoooooooo !!!!
coq
MVP Visual C#