У меня есть форма с меню и панель инструментов вверху. МенюStrip имеет приятный вид фона градиента, как я могу получить тот же эффект от элемента управления toolStrip? Я знаю о свойстве RenderMode, но изменение этого не имеет желаемого результата.toolStrip иметь menuStrip градиентный фон
4
A
ответ
1
Вы можете добиться этого с помощью пользовательского средства визуализации.
public class CustomToolStripRenderer : ToolStripProfessionalRenderer
{
public CustomToolStripRenderer() { }
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
//you may want to change this based on the toolstrip's dock or layout style
LinearGradientMode mode = LinearGradientMode.Horizontal;
using (LinearGradientBrush b = new LinearGradientBrush(e.AffectedBounds, ColorTable.MenuStripGradientBegin, ColorTable.MenuStripGradientEnd, mode))
{
e.Graphics.FillRectangle(b, e.AffectedBounds);
}
}
}
Затем установите свою инструментальную панель для использования экземпляра этого средства визуализации.
public Form1()
{
InitializeComponent();
CustomToolStripRenderer r = new CustomToolStripRenderer();
r.RoundedEdges = false;
toolStrip1.Renderer = r;
}
+0
Обратите внимание, что это не работает должным образом, если ToolStrip содержит элементы с раскрывающимися меню. Фоновые рисунки выпадающего меню также станут градиентными. – deegee
Не думайте, что для этого есть свойство. Существует свойство «BackgroundImage», если вы хотите сделать для него градиентное изображение. –
Как вы визуализируете свой 'MenuStrip' так, чтобы он имел такой« градиентный фон »? Я имею в виду, если вы знаете, как его отобразить, как можно применить один и тот же рендеринг на 'ToolStrip', так что фоны обоих одинаковы. –
МенюStrip - это простой элемент управления menuStrip с RenderMode, установленным в «ManagerRenderMode», который является значением по умолчанию. Я не знаю, как это делается. Как применить тот же рендерер к toolStrip? – PaulK