C # ToolStripPanel Рисование Вопрос - PullRequest
0 голосов
/ 08 июня 2009

Я пытаюсь заставить ToolStripPanel иметь тот же стиль рисования, что и встроенные ToolStrips, чтобы он выглядел как одна непрерывная полоса. У меня есть ToolStrips, использующие ToolStripProfessionalRenderer, так что они оформлены так же, как панель задач Windows.

Я подошел ближе, создав новый рендер, производный от 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);
      }
   }

Это создает градиентный вид с правильными цветами, но они не совсем совпадают. Кажется, что градиент имеет большее количество цветов, поэтому спред вытягивается дольше.

Я учел границу ToolStrips (которая не показана в этом коде), но они все еще не совсем совпадают.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

2 голосов
/ 11 июня 2009

Я наконец-то понял это - и теперь мне это кажется очевидным.

ColorTable в ToolStripPanelProfessionalRenderer имеет три цвета, которые нас интересуют:

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

Фон должен быть нарисован в двух частях - верхний градиент и нижний градиент.

Верх переходит от цвета «Начало» к «Среднему», а нижний - из цвета «Средний» к цвету «Конец».

выглядит отлично ...

1 голос
/ 09 июня 2009

Проверьте глубину цвета вашей настройки. У нас была похожая проблема в системах, в которых не было 32-битного цвета. Все, что меньше 32-битного цвета, привело к незначительным различиям. 32-битные цветовые системы выглядели отлично.

Мы никогда не находили решения, но, возможно, вы можете навязать своим пользователям требование 32-битного цвета. ; -)

...