Je remplis l'arrière-plan de certains formulaires WinForms VB.NET 2005 avec un joli dégradé (en surchargeant l'événement OnPaint). Cela fonctionne correctement, mais les différentes étiquettes, etc. du formulaire s'affichent avec un arrière-plan uni même après avoir défini BackColor sur Color.Transparent. Définir la clé de transparence du formulaire lui-même semble affecter cela mais je ne peux pas obtenir les étiquettes pour avoir une BackColor vraiment transparente, y a-t-il un moyen facile de contourner cela ou est-ce que je regarde des contrôles personnalisés etc.Arrière-plans de contrôle transparents sur une forme dégradée VB.NET?
1
A
Répondre
4
Ajoutez une nouvelle classe à votre projet et collez le code ci-dessous. Construire. Déposez le nouveau contrôle du haut de votre boîte à outils sur votre formulaire.
Public Class TransparentLabel
Inherits Label
Public Sub New()
Me.SetStyle(ControlStyles.Opaque, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT
Return cp
End Get
End Property
End Class
Le scintillement peut être perceptible, pas de solution.
1
Après quelques essais que j'ai trouvé que les œuvres suivantes pour les fonds de forme de remplissage Gradiant et préserver la transparence de l'étiquette:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim formGraphics As Graphics = e.Graphics
Dim gradientBrush As New LinearGradientBrush(New Point(0, Height), New Point(0, 0), Me.AppSettings.FormGradiantFrom, Me.AppSettings.FormGradiantTo)
formGraphics.FillRectangle(gradientBrush, ClientRectangle)
End Sub
Et en cas de charge de forme:
SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer Or _
ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
Questions connexes
- 1. Tracer une ligne avec une couleur dégradée
- 2. Comment réduire la forme d'un clic sur un contrôle webbrowser
- 3. contrôle de minuterie dans vb.net
- 4. Contrôle de tabulation dans VB.Net
- 5. VB.NET - RichTextBox - Appliquer la mise en forme au texte sélectionné
- 6. vb.net appel d'une sous-routine sur un contrôle utilisateur
- 7. flux de contrôle sous forme ASP.NET
- 8. VB.Net Winforms Variable de contrôle utilisateur
- 9. Contrôle sans un formulaire dans VB.NET
- 10. Comment obtenez-vous le contrôle d'un contrôle dans VB.Net 3.0?
- 11. Utilisation de ICSharpCode.TextEditor sur VB.NET
- 12. coins arrondis avec effets d'arrière-plan transparents
- 13. Exemple de code montrant comment ajouter une couleur dégradée à l'application iPhone
- 14. Comment une forme peut-elle rester sur une autre?
- 15. Mesures de performances ASP.NET sur une plate-forme hébergée
- 16. Shortest façon d'écrire une méthode d'accès thread-safe à une forme de fenêtres contrôle
- 17. Sprites transparents en C++ avec Allegro
- 18. Affichage des contrôles sur une forme alpha-mélangée
- 19. Comment dessiner des polygones transparents avec Python?
- 20. MS Chart Mise en forme des axes de contrôle
- 21. Différents contextes de données sous une forme SL3
- 22. vb.net ajouter une référence
- 23. Impossible de sérialiser une propriété sur un contrôle
- 24. Le rendu des pngs transparents de IE8 est FUBARé sur mon site
- 25. Où puis-je trouver une feuille de calcul simple ou un contrôle de grille pour VB.NET?
- 26. Quelqu'un at-il une fonction vb.net qui va parcourir la hiérarchie de contrôle de page maître?
- 27. Exécution de l'application vb.net sur un site
- 28. Comment le nid du cadre .net se forme-t-il dans les classes? (vb.net)
- 29. l'installation de l'application publiée sur vb.net?
- 30. natif du code C/C++ sur une plate-forme Android
I mis en œuvre la solution décrite mais j'ai un problème: lorsque je fais glisser mon formulaire, l'arrière-plan capturé dans la position précédente est déplacé vers la nouvelle position ... –