ToolStripProfessionalRenderer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обрабатывает функции рисования для объектов ToolStrip, применяя пользовательскую палитру и упрощенный стиль.
public ref class ToolStripProfessionalRenderer : System::Windows::Forms::ToolStripRenderer
public class ToolStripProfessionalRenderer : System.Windows.Forms.ToolStripRenderer
type ToolStripProfessionalRenderer = class
inherit ToolStripRenderer
Public Class ToolStripProfessionalRenderer
Inherits ToolStripRenderer
- Наследование
Примеры
В следующем примере кода показано, как создать составной элемент управления, который имитирует область навигации , предоставляемую Microsoft® Outlook®. Полный список кода см. в разделе Практическое руководство. Создание элемента управления ToolStrip в профессиональном стиле.
internal class StackRenderer : ToolStripProfessionalRenderer
{
private static Bitmap titleBarGripBmp;
private static string titleBarGripEnc = @"Qk16AQAAAAAAADYAAAAoAAAAIwAAAAMAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5ANj+RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5ANj+RzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMANj+";
// Define titlebar colors.
private static Color titlebarColor1 = Color.FromArgb(89, 135, 214);
private static Color titlebarColor2 = Color.FromArgb(76, 123, 204);
private static Color titlebarColor3 = Color.FromArgb(63, 111, 194);
private static Color titlebarColor4 = Color.FromArgb(50, 99, 184);
private static Color titlebarColor5 = Color.FromArgb(38, 88, 174);
private static Color titlebarColor6 = Color.FromArgb(25, 76, 164);
private static Color titlebarColor7 = Color.FromArgb(12, 64, 154);
private static Color borderColor = Color.FromArgb(0, 0, 128);
static StackRenderer()
{
titleBarGripBmp = StackView.DeserializeFromBase64(titleBarGripEnc);
}
public StackRenderer()
{
}
private void DrawTitleBar(Graphics g, Rectangle rect)
{
// Assign the image for the grip.
Image titlebarGrip = titleBarGripBmp;
// Fill the titlebar.
// This produces the gradient and the rounded-corner effect.
g.DrawLine(new Pen(titlebarColor1), rect.X, rect.Y, rect.X + rect.Width, rect.Y);
g.DrawLine(new Pen(titlebarColor2), rect.X, rect.Y + 1, rect.X + rect.Width, rect.Y + 1);
g.DrawLine(new Pen(titlebarColor3), rect.X, rect.Y + 2, rect.X + rect.Width, rect.Y + 2);
g.DrawLine(new Pen(titlebarColor4), rect.X, rect.Y + 3, rect.X + rect.Width, rect.Y + 3);
g.DrawLine(new Pen(titlebarColor5), rect.X, rect.Y + 4, rect.X + rect.Width, rect.Y + 4);
g.DrawLine(new Pen(titlebarColor6), rect.X, rect.Y + 5, rect.X + rect.Width, rect.Y + 5);
g.DrawLine(new Pen(titlebarColor7), rect.X, rect.Y + 6, rect.X + rect.Width, rect.Y + 6);
// Center the titlebar grip.
g.DrawImage(
titlebarGrip,
new Point(rect.X + ((rect.Width / 2) - (titlebarGrip.Width / 2)),
rect.Y + 1));
}
// This method handles the RenderGrip event.
protected override void OnRenderGrip(ToolStripGripRenderEventArgs e)
{
DrawTitleBar(
e.Graphics,
new Rectangle(0, 0, e.ToolStrip.Width, 7));
}
// This method handles the RenderToolStripBorder event.
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
DrawTitleBar(
e.Graphics,
new Rectangle(0, 0, e.ToolStrip.Width, 7));
}
// This method handles the RenderButtonBackground event.
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
Graphics g = e.Graphics;
Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);
Color gradientBegin = Color.FromArgb(203, 225, 252);
Color gradientEnd = Color.FromArgb(125, 165, 224);
ToolStripButton button = e.Item as ToolStripButton;
if (button.Pressed || button.Checked)
{
gradientBegin = Color.FromArgb(254, 128, 62);
gradientEnd = Color.FromArgb(255, 223, 154);
}
else if (button.Selected)
{
gradientBegin = Color.FromArgb(255, 255, 222);
gradientEnd = Color.FromArgb(255, 203, 136);
}
using (Brush b = new LinearGradientBrush(
bounds,
gradientBegin,
gradientEnd,
LinearGradientMode.Vertical))
{
g.FillRectangle(b, bounds);
}
e.Graphics.DrawRectangle(
SystemPens.ControlDarkDark,
bounds);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.Width - 1,
bounds.Y);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.X,
bounds.Height - 1);
ToolStrip toolStrip = button.Owner;
ToolStripButton nextItem = button.Owner.GetItemAt(
button.Bounds.X,
button.Bounds.Bottom + 1) as ToolStripButton;
if (nextItem == null)
{
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Height - 1,
bounds.X + bounds.Width - 1,
bounds.Height - 1);
}
}
}
Friend Class StackRenderer
Inherits ToolStripProfessionalRenderer
Private Shared titleBarGripBmp As Bitmap
Private Shared titleBarGripEnc As String = "Qk16AQAAAAAAADYAAAAoAAAAIwAAAAMAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5ANj+RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5ANj+RzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMANj+"
' Define titlebar colors.
Private Shared titlebarColor1 As Color = Color.FromArgb(89, 135, 214)
Private Shared titlebarColor2 As Color = Color.FromArgb(76, 123, 204)
Private Shared titlebarColor3 As Color = Color.FromArgb(63, 111, 194)
Private Shared titlebarColor4 As Color = Color.FromArgb(50, 99, 184)
Private Shared titlebarColor5 As Color = Color.FromArgb(38, 88, 174)
Private Shared titlebarColor6 As Color = Color.FromArgb(25, 76, 164)
Private Shared titlebarColor7 As Color = Color.FromArgb(12, 64, 154)
Private Shared borderColor As Color = Color.FromArgb(0, 0, 128)
Shared Sub New()
titleBarGripBmp = StackView.DeserializeFromBase64(titleBarGripEnc)
End Sub
Public Sub New()
End Sub
Private Sub DrawTitleBar(ByVal g As Graphics, ByVal rect As Rectangle)
' Assign the image for the grip.
Dim titlebarGrip As Image = titleBarGripBmp
' Fill the titlebar.
' This produces the gradient and the rounded-corner effect.
g.DrawLine(New Pen(titlebarColor1), rect.X, rect.Y, rect.X + rect.Width, rect.Y)
g.DrawLine(New Pen(titlebarColor2), rect.X, rect.Y + 1, rect.X + rect.Width, rect.Y + 1)
g.DrawLine(New Pen(titlebarColor3), rect.X, rect.Y + 2, rect.X + rect.Width, rect.Y + 2)
g.DrawLine(New Pen(titlebarColor4), rect.X, rect.Y + 3, rect.X + rect.Width, rect.Y + 3)
g.DrawLine(New Pen(titlebarColor5), rect.X, rect.Y + 4, rect.X + rect.Width, rect.Y + 4)
g.DrawLine(New Pen(titlebarColor6), rect.X, rect.Y + 5, rect.X + rect.Width, rect.Y + 5)
g.DrawLine(New Pen(titlebarColor7), rect.X, rect.Y + 6, rect.X + rect.Width, rect.Y + 6)
' Center the titlebar grip.
g.DrawImage(titlebarGrip, New Point(rect.X + (rect.Width / 2 - titlebarGrip.Width / 2), rect.Y + 1))
End Sub
' This method handles the RenderGrip event.
Protected Overrides Sub OnRenderGrip(e As ToolStripGripRenderEventArgs)
DrawTitleBar(e.Graphics, New Rectangle(0, 0, e.ToolStrip.Width, 7))
End Sub
' This method handles the RenderToolStripBorder event.
Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
DrawTitleBar(e.Graphics, New Rectangle(0, 0, e.ToolStrip.Width, 7))
End Sub
' This method handles the RenderButtonBackground event.
Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
Dim g As Graphics = e.Graphics
Dim bounds As New Rectangle(Point.Empty, e.Item.Size)
Dim gradientBegin As Color = Color.FromArgb(203, 225, 252)
Dim gradientEnd As Color = Color.FromArgb(125, 165, 224)
Dim button As ToolStripButton = CType(e.Item, ToolStripButton)
If button.Pressed OrElse button.Checked Then
gradientBegin = Color.FromArgb(254, 128, 62)
gradientEnd = Color.FromArgb(255, 223, 154)
ElseIf button.Selected Then
gradientBegin = Color.FromArgb(255, 255, 222)
gradientEnd = Color.FromArgb(255, 203, 136)
End If
Dim b = New LinearGradientBrush(bounds, gradientBegin, gradientEnd, LinearGradientMode.Vertical)
Try
g.FillRectangle(b, bounds)
Finally
b.Dispose()
End Try
e.Graphics.DrawRectangle(SystemPens.ControlDarkDark, bounds)
g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Y, bounds.Width - 1, bounds.Y)
g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Y, bounds.X, bounds.Height - 1)
Dim toolStrip As ToolStrip = button.Owner
Dim nextItem As ToolStripButton = CType(button.Owner.GetItemAt(button.Bounds.X, button.Bounds.Bottom + 1), ToolStripButton)
If nextItem Is Nothing Then
g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Height - 1, bounds.X + bounds.Width - 1, bounds.Height - 1)
End If
End Sub
End Class
Комментарии
ToolStripProfessionalRenderer создает ручки и кисти на основе заменяемой таблицы цветов с именем ProfessionalColorTable.
Конструкторы
ToolStripProfessionalRenderer() |
Инициализирует новый экземпляр класса ToolStripProfessionalRenderer. |
ToolStripProfessionalRenderer(ProfessionalColorTable) |
Инициализирует новый экземпляр класса ToolStripProfessionalRenderer. |
Свойства
ColorTable |
Возвращает цветовую палитру, используемую для рисования. |
RoundedEdges |
Возвращает или задает значение, указывающее, имеют ли элементы управления скругленные очертания вместо прямоугольных и резких. |
Методы
События
RenderArrow |
Происходит во время отрисовки стрелки в элементе ToolStripItem. (Унаследовано от ToolStripRenderer) |
RenderButtonBackground |
Создается во время отрисовки фона для кнопки ToolStripButton. (Унаследовано от ToolStripRenderer) |
RenderDropDownButtonBackground |
Создается во время отрисовки фона для кнопки ToolStripDropDownButton. (Унаследовано от ToolStripRenderer) |
RenderGrip |
Создается во время отрисовки маркера перемещения для элемента ToolStrip. (Унаследовано от ToolStripRenderer) |
RenderImageMargin |
Рисует поля между изображением и его контейнером. (Унаследовано от ToolStripRenderer) |
RenderItemBackground |
Создается во время отрисовки фона для кнопки ToolStripItem. (Унаследовано от ToolStripRenderer) |
RenderItemCheck |
Создается во время отрисовки изображения для выбранного элемента ToolStripItem. (Унаследовано от ToolStripRenderer) |
RenderItemImage |
Создается во время отрисовки изображения для элемента ToolStripItem. (Унаследовано от ToolStripRenderer) |
RenderItemText |
Создается во время отрисовки текста для элемента ToolStripItem. (Унаследовано от ToolStripRenderer) |
RenderLabelBackground |
Создается во время отрисовки фона для кнопки ToolStripLabel. (Унаследовано от ToolStripRenderer) |
RenderMenuItemBackground |
Создается во время отрисовки фона для кнопки ToolStripMenuItem. (Унаследовано от ToolStripRenderer) |
RenderOverflowButtonBackground |
Происходит во время отрисовки фона для кнопки переполнения. (Унаследовано от ToolStripRenderer) |
RenderSeparator |
Создается во время отрисовки объекта ToolStripSeparator. (Унаследовано от ToolStripRenderer) |
RenderSplitButtonBackground |
Создается во время отрисовки фона для кнопки ToolStripSplitButton. (Унаследовано от ToolStripRenderer) |
RenderStatusStripSizingGrip |
Происходит при изменении стиля отображения. (Унаследовано от ToolStripRenderer) |
RenderToolStripBackground |
Создается во время отрисовки фона для кнопки ToolStrip. (Унаследовано от ToolStripRenderer) |
RenderToolStripBorder |
Создается во время отрисовки границ для элемента ToolStrip. (Унаследовано от ToolStripRenderer) |
RenderToolStripContentPanelBackground |
Рисует фон для панели ToolStripContentPanel. (Унаследовано от ToolStripRenderer) |
RenderToolStripPanelBackground |
Рисует фон для панели ToolStripPanel. (Унаследовано от ToolStripRenderer) |
RenderToolStripStatusLabelBackground |
Рисует фон для панели ToolStripStatusLabel. (Унаследовано от ToolStripRenderer) |