Je peux dessiner une bordure 3D à l'aide de ControlPaint.DrawBorder3D, mais j'ai la bordure 3D 'Windows Classic'. Je veux dessiner la bordure 3D du thème actuel - dans le thème XP par défaut, il s'agit d'une bordure bleue ou grise 1px. Comment puis-je dessiner cela, et comment puis-je obtenir ses largeurs?Comment tracer une bordure 3D à l'aide de styles visuels?
Répondre
Pre .NET Framework 2.0 Réponse
Je suppose que vous dessinez votre propre, un contrôle spécial et que vous voulez utiliser des éléments du thème actuellement actif pour dessiner il correspond mieux avec XP standards contrôles. Vous êtes et non en essayant, par exemple, d'activer la thématisation sur un contrôle Button standard. Correct?
C'est en fait un peu compliqué. Votre objectif principal devrait être UxTheme.dll. Cela abrite tout ce dont vous avez besoin pour dessiner des contrôles à thème. Here est un joli C# autour de cette DLL pour vous faciliter la vie. Il y en a d'autres donc si ce n'est pas exactement ce que vous vouliez, j'espère que je vous ai indiqué la bonne direction.
On dirait que vous pourriez avoir besoin de regarder System.Windows.Forms.VisualStyles.VisualStyleRenderer:
Le
System.Windows.Forms.VisualStyles
espace de noms expose des objetsVisualStyleElement
qui représentent tous les contrôles et de l'interface utilisateur (UI) éléments qui sont pris en charge par les styles visuels . Pour dessiner ou obtenir des informations autour d'un élément particulier, vous devez définir unVisualStyleRenderer
à l'élément vous intéresse.Pour dessiner un élément, utilisez la méthode
DrawBackground
. LaVisualStyleRenderer
classe également comprend des méthodes, telles queGetColor
etGetEnumValue
, qui fournissent des informations sur la façon dont un élément est défini par le style visuel actuel .
Il existe également un exemple de code sur cette page.
Vous devrez dessiner la bordure vous-même, mais vous pouvez obtenir la couleur de VisualStyleElement.Window.Caption.Active
et la taille devrait être la taille du cadre de la fenêtre (je crois), qui est VisualStyleElement.Window.FrameBottom.Active
. Si vous explorez le VisualStyleElement.Window
, vous devriez être en mesure de déterminer quel élément de la fenêtre contient les informations dont vous avez besoin pour dessiner votre bordure.
- 1. Styles visuels sur WTL CreateSimpleToolbar()
- 2. Styles de bordure d'image liée
- 3. Activer les styles visuels pour une bibliothèque de classes
- 4. Tracer une bordure autour de mkmapview, scrollview et webview
- 5. Comment modifier une bordure de liste ASP.NET de 3d à 1px solide?
- 6. Comment activer les styles visuels dans WPF pour les boîtes de dialogue communes?
- 7. Blackberry - Comment ajouter une bordure à BasicEditField?
- 8. Comment désactiver les styles visuels pour un seul contrôle, et pas ses enfants?
- 9. Comment tracer une exception de sécurité ASP.NET
- 10. structure de données laide à la recherche java
- 11. SSRS 2005 Matrice et styles de bordure lors de l'exportation vers XLS
- 12. Comment tracer une ligne sur l'iPhone?
- 13. Pouvez-vous désactiver les styles/thèmes visuels pour un seul contrôle Windows?
- 14. Tracer une ligne avec une couleur dégradée
- 15. Convertir tronc à une matrice de projection en Java 3d
- 16. Générer une vignette avec une bordure blanche
- 17. Ajouter une bordure à une image dans l'iphone
- 18. Arrière-plan de contrôle TAB dans l'application ATL, styles XP
- 19. Comment tracer des triangles sur une grille 6x6 dans MATLAB?
- 20. Bibliothèque de traçage 3D dans vC++
- 21. Comment à tracer un cercle sur un fond changeant
- 22. Comment créer une bibliothèque de styles à utiliser dans les bibliothèques de classes Silverlight?
- 23. Commentaires visuels du service C#
- 24. Comment puis-je tracer une ligne droite dans jfreechart?
- 25. Tracer une ligne blanche en opengl es
- 26. Appliquer une bordure rouge à toutes les images hébergées sur CDN avec jQuery
- 27. Comment dessiner une superposition 2D sur une scène 3D Java?
- 28. tracer une ligne dans UIImageView problème
- 29. Comment dessiner un rectangle arrondi avec une bordure de largeur variable à l'intérieur de limites spécifiques
- 30. Comment faire disparaître la bordure de DecoratedTabPanel?
Est-ce nouveau pour 2008 (il n'a pas spécifié quelle version il utilisait, je me demandais juste) – colithium
Hmm, il est venu avec 2.0. Beaucoup plus facile (s'il utilise au moins 2.0) +1 – colithium
De quel VisualStyleElement ai-je besoin? Aucun d'eux ne me regarde bien. – Simon