Ich mache eine .NET 3.5 App mit einem Formular, das einen teilweise transparenten schwarzen Hintergrund zeichnet. Ich zwingende OnPaintBackground dies zu erreichen:Teiltransparenz mit 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);
}
}
Es funktioniert, aber gelegentlich die Form zieht über sich selbst, ohne den Bildschirm zu löschen, so dass die Transparenz dunkler als es sein sollte. Ich habe versucht, mit Graphics.Flush()
und Graphics.Clear()
zu spielen, aber es hilft entweder nicht oder entfernt vollständig Transparenz. Irgendwelche Vorschläge?
Edit: Hier ist, wie es aussieht, nachdem die App auf der linken Seite beginnen, und nach der Form neu zeichnet sich ein paar Mal (als Antwort von einem Steuerelement zu einem anderen zu Tabbing) auf der rechten Seite:
Transparency Issue http://www.quicksnapper.com/files/5085/17725729384A10347269148_m.png
Edit 2: ich war heute Morgen ein paar Dinge heraus versucht und festgestellt, dass, wenn der Desktop hinter den transparenten Bereichen ändern, es ist nicht wirklich neu gezeichnet zu sein. Wenn ich zum Beispiel den Task-Manager öffne und ihn hinter das Fenster halte, sieht er nicht, dass er sich selbst aktualisiert. Dies macht Sinn mit dem, was ich mit den Transparenzstufen gesehen habe. Gibt es eine Funktion, Windows dazu zu bringen, den Bereich hinter dem Fenster neu zu zeichnen?
bearbeiten 3: Ich habe versucht, ein paar Eigenschaften auf dem Formular zu ändern, aber sie alle Ergebnis in der Form Zeichnung nicht-transparent schwarz:
this.AllowTransparency = true;
this.DoubleBuffered = true;
this.Opacity = .99;
Ich werde versuchen, eine zu schaffen separates Fenster für den transparenten Teil als übertönt erwähnt, aber andere Ideen sind immer noch willkommen.
Ist dies eine Situation, in der Sie die Opacity-Eigenschaft nicht festlegen können? – Demi
Ja, ich möchte nicht, dass die Steuerelemente des Formulars transparent sind, nur Teile des Fensterhintergrunds. –
Ist dies auf Vista mit Aero aktiviert? Es wäre nützlich zu wissen, dass ich es selbst ausprobieren kann, um es herauszufinden. –