ToolStripProfessionalRenderer 類別

定義

處理 ToolStrip 物件的繪製功能,並套用自訂調色盤 (Palette) 和簡潔樣式。

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
繼承
ToolStripProfessionalRenderer

範例

下列程式碼範例示範如何建立複合控制項,以模擬 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

取得或設定值,指出控制項的邊緣是否具有圓角外觀而非方形或尖角外觀。

方法

DrawArrow(ToolStripArrowRenderEventArgs)

ToolStripItem 上繪製箭號。

(繼承來源 ToolStripRenderer)
DrawButtonBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripButton 的背景。

(繼承來源 ToolStripRenderer)
DrawDropDownButtonBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripDropDownButton 的背景。

(繼承來源 ToolStripRenderer)
DrawGrip(ToolStripGripRenderEventArgs)

ToolStrip 上繪製移動控制軸。

(繼承來源 ToolStripRenderer)
DrawImageMargin(ToolStripRenderEventArgs)

ToolStrip 上繪製影像周圍的空間。

(繼承來源 ToolStripRenderer)
DrawItemBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripItem 的背景。

(繼承來源 ToolStripRenderer)
DrawItemCheck(ToolStripItemImageRenderEventArgs)

ToolStripItem 上繪製影像,表示項目處於已選取狀態。

(繼承來源 ToolStripRenderer)
DrawItemImage(ToolStripItemImageRenderEventArgs)

ToolStripItem 上繪製影像。

(繼承來源 ToolStripRenderer)
DrawItemText(ToolStripItemTextRenderEventArgs)

ToolStripItem 上繪製文字。

(繼承來源 ToolStripRenderer)
DrawLabelBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripLabel 的背景。

(繼承來源 ToolStripRenderer)
DrawMenuItemBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripMenuItem 的背景。

(繼承來源 ToolStripRenderer)
DrawOverflowButtonBackground(ToolStripItemRenderEventArgs)

繪製溢位按鈕的背景。

(繼承來源 ToolStripRenderer)
DrawSeparator(ToolStripSeparatorRenderEventArgs)

繪製 ToolStripSeparator

(繼承來源 ToolStripRenderer)
DrawSplitButton(ToolStripItemRenderEventArgs)

繪製 ToolStripSplitButton

(繼承來源 ToolStripRenderer)
DrawStatusStripSizingGrip(ToolStripRenderEventArgs)

繪製可調整大小的底框。

(繼承來源 ToolStripRenderer)
DrawToolStripBackground(ToolStripRenderEventArgs)

繪製 ToolStrip 的背景。

(繼承來源 ToolStripRenderer)
DrawToolStripBorder(ToolStripRenderEventArgs)

繪製 ToolStrip 的框線。

(繼承來源 ToolStripRenderer)
DrawToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

繪製 ToolStripContentPanel 的背景。

(繼承來源 ToolStripRenderer)
DrawToolStripPanelBackground(ToolStripPanelRenderEventArgs)

繪製 ToolStripPanel 的背景。

(繼承來源 ToolStripRenderer)
DrawToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

繪製 ToolStripStatusLabel 的背景。

(繼承來源 ToolStripRenderer)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
Initialize(ToolStrip)

在衍生類別中覆寫時,提供指定之 ToolStrip 的自訂初始化。

(繼承來源 ToolStripRenderer)
InitializeContentPanel(ToolStripContentPanel)

初始化指定的 ToolStripContentPanel

(繼承來源 ToolStripRenderer)
InitializeItem(ToolStripItem)

在衍生類別中覆寫時,提供指定之 ToolStripItem 的自訂初始化。

(繼承來源 ToolStripRenderer)
InitializePanel(ToolStripPanel)

初始化指定的 ToolStripPanel

(繼承來源 ToolStripRenderer)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnRenderArrow(ToolStripArrowRenderEventArgs)

引發 RenderArrow 事件。

OnRenderButtonBackground(ToolStripItemRenderEventArgs)

引發 RenderButtonBackground 事件。

OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs)

引發 RenderDropDownButtonBackground 事件。

OnRenderGrip(ToolStripGripRenderEventArgs)

引發 RenderGrip 事件。

OnRenderImageMargin(ToolStripRenderEventArgs)

繪製項目背景。

OnRenderItemBackground(ToolStripItemRenderEventArgs)

引發 OnRenderItemBackground(ToolStripItemRenderEventArgs) 事件。

(繼承來源 ToolStripRenderer)
OnRenderItemCheck(ToolStripItemImageRenderEventArgs)

引發 RenderItemCheck 事件。

OnRenderItemImage(ToolStripItemImageRenderEventArgs)

引發 RenderItemImage 事件。

OnRenderItemText(ToolStripItemTextRenderEventArgs)

引發 RenderItemText 事件。

OnRenderLabelBackground(ToolStripItemRenderEventArgs)

引發 RenderLabelBackground 事件。

OnRenderMenuItemBackground(ToolStripItemRenderEventArgs)

引發 RenderMenuItemBackground 事件。

OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs)

引發 RenderOverflowButtonBackground 事件。

OnRenderSeparator(ToolStripSeparatorRenderEventArgs)

引發 RenderSeparator 事件。

OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs)

引發 OnRenderSplitButtonBackground 事件。

OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs)

引發 RenderStatusStripSizingGrip 事件。

(繼承來源 ToolStripRenderer)
OnRenderToolStripBackground(ToolStripRenderEventArgs)

引發 RenderToolStripBackground 事件。

OnRenderToolStripBorder(ToolStripRenderEventArgs)

引發 RenderToolStripBorder 事件。

OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

引發 RenderToolStripContentPanelBackground 事件。

OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs)

引發 RenderToolStripPanelBackground 事件。

OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

引發 RenderToolStripStatusLabelBackground 事件。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

事件

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)

適用於