J'ai créé un panneau personnalisé (hérité de Panel) qui remplace la méthode OnPaint pour peindre le rectangle intérieur avec LinearGradientBrush.Panneau personnalisé Windows Form avec enfant transparent Problème
public void PaintPanel()
{
// Re-calculate the
CalculatePanelHeight();
Graphics _g = this.CreateGraphics();
Point _startPoint = new Point(0, m_TopAreaHeight);
Size _size = new Size(Width, m_BtmAreaHeight);
Rectangle _btmRect = new Rectangle(_startPoint, _size);
LinearGradientBrush _btmGradBrush = new LinearGradientBrush(_btmRect, BackColorBottom, BackColorBottom2, LinearGradientMode.Vertical);
_btmGradBrush.GammaCorrection = true;
_g.FillRectangle(_btmGradBrush, _btmRect);
...
}
protected override void OnPaint(PaintEventArgs e)
{
PaintPanel();
base.OnPaint(e);
}
Cependant, il y a 2 bizarreries: sommes
Chaque fois qu'un contrôle avec un fond transparent est entraîné dans le panneau personnalisé, son arrière-plan devient blanc.
Mon panneau personnalisé ne prend pas en charge l'arrière-plan transparent (la couleur devient blanche à chaque fois que je place l'une des couleurs du dégradé sur transparent).
Quelqu'un pourrait-il nous donner votre avis?
Merci.