2009-06-08 4 views
0

Je tente d'obtenir un ToolStripPanel d'avoir le même style de dessin que les toolstrips intégrés, de sorte qu'il ressemble à une barre continue. J'ai les ToolStrips en utilisant le ToolStripProfessionalRenderer afin qu'ils aient le même style que la barre des tâches de Windows.C# ToolStripPanel Dessin Question

j'ai obtenu près en créant un nouveau dérivé de Renderer ToolStripProfessionalRenderer:

class CustomRenderer : ToolStripProfessionalRenderer 
    { 
     protected override void OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs e) 
     { 
     base.OnRenderToolStripPanelBackground(e); 

     LinearGradientBrush lgb = new LinearGradientBrush(e.ToolStripPanel.ClientRectangle, this.ColorTable.ToolStripGradientBegin, this.ColorTable.ToolStripGradientEnd, LinearGradientMode.Vertical); 
     e.Graphics.FillPath(lgb, e.ToolStripPanel.ClientRectangle); 
     } 
    } 

Cela crée le look dégradé avec les bonnes couleurs, mais ils ne correspondent pas tout à fait raison. Il semble que le dégradé ait un nombre de couleurs plus élevé, de sorte que la propagation est plus longue.

Je pris en compte la frontière des toolstrips (qui ne figure pas dans ce code), mais ils ne correspondent pas toujours en place tout à fait raison.

Quelqu'un sait comment y arriver?

Répondre

2

J'ai finalement compris cela - et je semble si évident maintenant.

Le ColorTable dans le ToolStripPanelProfessionalRenderer a trois couleurs qui nous intéresse:

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

Le fond doit être peint en deux parties - le gradient haut et le gradient du bas. Le sommet va de la couleur 'Begin' à la couleur 'Middle', et le fond va de la couleur 'Middle' à la couleur 'End'.

A l'air parfait ...

1

Vérifiez la profondeur de couleur de votre configuration. Nous avons rencontré un problème similaire sur les systèmes n'ayant pas de couleur 32 bits. Tout ce qui est inférieur à la couleur 32 bits, a entraîné des différences subtiles. Les systèmes couleur 32 bits semblaient bien.

Nous n'avons trouvé une solution, mais vous pouvez peut-être pousser l'exigence de couleur 32 bits sur vos utilisateurs. ;-)

+0

Merci pour la suggestion, je n'ai pas pensé à ça. Malheureusement, cela n'a pas fait l'affaire :(Je commence à penser que je devrais simplement abandonner l'idée. – Matt