2009-06-08 4 views
0

Ich versuche, ein ToolStripPanel mit dem gleichen Zeichenstil wie die eingebetteten ToolStrips zu erhalten, so dass es wie ein durchgehender Balken aussieht. Ich habe die ToolStrips, die den ToolStripProfessionalRenderer verwenden, so dass sie wie die Windows-Taskleiste formatiert sind.C# ToolStripPanel Zeichnung Frage

Ich habe nahe gekommen durch einen neuen Renderer Schaffung von Toolstripprofessionalrenderer abgeleitet:

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); 
     } 
    } 

Dies schafft die Steigung Look mit den richtigen Farben, aber sie ist nicht ganz richtig zusammenpassen. Es scheint, als hätte der Farbverlauf eine höhere Anzahl an Farben, so dass der Spread länger gezogen wird.

Ich habe den Rand der ToolStrips berücksichtigt (was in diesem Code nicht gezeigt wird), aber sie stimmen immer noch nicht ganz richtig überein.

Wer weiß, wie man das schafft?

Antwort

2

Endlich habe ich das herausgefunden - und jetzt scheint es mir so offensichtlich.

Die Colortable in der ToolStripPanelProfessionalRenderer hat drei Farben, die wir interessiert sind:

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

Der Hintergrund in zwei Teile lackiert werden muss - die Top-Gradienten und der untere Farbverlauf.

Der obere Teil geht von der Farbe "Begin" in die Farbe "Middle" und der untere Teil von der Farbe "Middle" in die Farbe "End".

Sieht perfekt aus ...

1

Überprüfen Sie die Farbtiefe Ihrer Einrichtung. Wir hatten ein ähnliches Problem auf Systemen, die keine 32-Bit-Farbe hatten. Alles, was weniger als 32-Bit-Farbe, führte zu feinen Unterschieden. 32-Bit-Farbsysteme sahen gut aus.

Wir haben nie eine Lösung gefunden, aber vielleicht können Sie die 32-Bit-Farbanforderung auf Ihre Benutzer übertragen. ;-)

+0

Danke für den Vorschlag, ich habe nicht daran gedacht. Leider hat das nicht geholfen :(Ich fange an zu denken, dass ich die Idee einfach aufgeben sollte. – Matt