Commen mettre un Panel transparent ou plutôt qui montre l'image derrière de ma F
digital3d
Messages postés37Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention28 février 2005
-
11 nov. 2004 à 20:16
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
12 nov. 2004 à 20:58
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 ?
digital3d
Messages postés37Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention28 février 20051 11 nov. 2004 à 23:24
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 !
digital3d
Messages postés37Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention28 février 20051 12 nov. 2004 à 14:40
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();
}
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 12 nov. 2004 à 15:18
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
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 12 nov. 2004 à 17:08
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.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 12 nov. 2004 à 20:56
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;
}