Je crée une application .NET 3.5 avec un formulaire qui dessine un fond noir partiellement transparent. Je suis primordial OnPaintBackground d'y arriver:Transparence partielle avec C# .NET 3.5 WinForms?
protected override void OnPaintBackground(PaintEventArgs e)
{
using (Brush brush = new SolidBrush(Color.FromArgb(155, Color.Black)))
{
e.Graphics.FillRectangle(brush, e.ClipRectangle);
}
}
Il fonctionne, mais parfois la forme tire sur elle-même sans effacer l'écran, ce qui rend la transparence plus sombre que ce qu'elle devrait être. J'ai essayé de jouer avec Graphics.Flush()
et Graphics.Clear()
, mais cela n'aide pas ou supprime complètement la transparence. Aucune suggestion?
Edit: est ici à quoi il ressemble, après avoir commencé l'application sur la gauche, et après la forme elle-même redessine quelques fois (en réponse à tabulant d'un contrôle à l'autre) à droite:
Transparency Issue http://www.quicksnapper.com/files/5085/17725729384A10347269148_m.png
Edit 2: J'ai essayé quelques petites choses ce matin et a remarqué que lorsque le bureau derrière les parties transparentes changer, il est pas vraiment être redessinée. Par exemple, si j'ouvre le Gestionnaire des tâches et le place derrière la fenêtre, vous ne le voyez pas se rafraîchir. Cela a du sens avec ce que j'ai vu avec les niveaux de transparence. Y at-il une fonction pour que Windows redessine la zone derrière votre fenêtre?
Edit 3: J'ai essayé de changer quelques propriétés sur la forme, mais ils sont tous résultat sous la forme de dessin non transparent noir:
this.AllowTransparency = true;
this.DoubleBuffered = true;
this.Opacity = .99;
Je vais essayer de créer un fenêtre séparée pour la partie transparente comme overslacked mentionné, mais d'autres idées sont toujours les bienvenus.
Est-ce une situation dans laquelle vous ne parvenez pas à définir la propriété Opacité? – Demi
Oui, je ne veux pas que les contrôles du formulaire soient transparents, juste des parties de l'arrière-plan de la fenêtre. –
Est-ce sur Vista avec Aero activé? Il serait utile de savoir si je peux essayer moi-même pour essayer de le comprendre. –