2009-02-20 5 views
3

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

1

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.

4

On dirait que vous pourriez avoir besoin de regarder System.Windows.Forms.VisualStyles.VisualStyleRenderer:

Le System.Windows.Forms.VisualStyles espace de noms expose des objets VisualStyleElement 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 un VisualStyleRenderer à l'élément vous intéresse.

Pour dessiner un élément, utilisez la méthode DrawBackground. La VisualStyleRenderer classe également comprend des méthodes, telles que GetColor et GetEnumValue, 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.

+0

Est-ce nouveau pour 2008 (il n'a pas spécifié quelle version il utilisait, je me demandais juste) – colithium

+0

Hmm, il est venu avec 2.0. Beaucoup plus facile (s'il utilise au moins 2.0) +1 – colithium

+0

De quel VisualStyleElement ai-je besoin? Aucun d'eux ne me regarde bien. – Simon

Questions connexes