ToolStripRenderer クラス

定義

ToolStrip オブジェクトの描画機能を処理します。

public ref class ToolStripRenderer abstract
public abstract class ToolStripRenderer
type ToolStripRenderer = class
Public MustInherit Class ToolStripRenderer
継承
ToolStripRenderer
派生

次のコード例は、カスタムの ToolStripRenderer クラスを実装する方法を示しています クラスはGridStripRenderer、コントロールの外観GridStripの 3 つの側面 (GridStrip罫線、罫線、ToolStripButton画像) をToolStripButtonカスタマイズします。 完全なコード一覧については、「 方法: カスタム ToolStripRenderer を実装する」を参照してください。

// This class implements a custom ToolStripRenderer for the 
// GridStrip control. It customizes three aspects of the 
// GridStrip control's appearance: GridStrip border, 
// ToolStripButton border, and ToolStripButton image.
internal class GridStripRenderer : ToolStripRenderer
{   
    // The style of the empty cell's text.
    private static StringFormat style = new StringFormat();

    // The thickness (width or height) of a 
    // ToolStripButton control's border.
    static int borderThickness = 2;

    // The main bitmap that is the source for the 
    // subimagesthat are assigned to individual 
    // ToolStripButton controls.
    private Bitmap bmp = null;

    // The brush that paints the background of 
    // the GridStrip control.
    private Brush backgroundBrush = null;

    // This is the static constructor. It initializes the
    // StringFormat for drawing the text in the empty cell.
    static GridStripRenderer()
    {
        style.Alignment = StringAlignment.Center;
        style.LineAlignment = StringAlignment.Center;
    }

    // This method initializes the GridStripRenderer by
    // creating the image that is used as the source for
    // the individual button images.
    protected override void Initialize(ToolStrip ts)
    {
        base.Initialize(ts);

        this.InitializeBitmap(ts);
    }

    // This method initializes an individual ToolStripButton
    // control. It copies a subimage from the GridStripRenderer's
    // main image, according to the position and size of 
    // the ToolStripButton.
    protected override void InitializeItem(ToolStripItem item)
    {
        base.InitializeItem(item);

        GridStrip gs = item.Owner as GridStrip;

        // The empty cell does not receive a subimage.
        if ((item is ToolStripButton) &&
            (item != gs.EmptyCell))
        {
            // Copy the subimage from the appropriate 
            // part of the main image.
            Bitmap subImage = bmp.Clone(
                item.Bounds,
                PixelFormat.Undefined);

            // Assign the subimage to the ToolStripButton
            // control's Image property.
            item.Image = subImage;
        }
    }

    // This utility method creates the main image that
    // is the source for the subimages of the individual 
    // ToolStripButton controls.
    private void InitializeBitmap(ToolStrip toolStrip)
    {
        // Create the main bitmap, into which the image is drawn.
        this.bmp = new Bitmap(
            toolStrip.Size.Width,
            toolStrip.Size.Height);

        // Draw a fancy pattern. This could be any image or drawing.
        using (Graphics g = Graphics.FromImage(bmp))
        {
            // Draw smoothed lines.
            g.SmoothingMode = SmoothingMode.AntiAlias;
            
            // Draw the image. In this case, it is 
            // a number of concentric ellipses. 
            for (int i = 0; i < toolStrip.Size.Width; i += 8)
            {
                g.DrawEllipse(Pens.Blue, 0, 0, i, i);
            }
        }
    }

    // This method draws a border around the GridStrip control.
    protected override void OnRenderToolStripBorder(
        ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBorder(e);

        ControlPaint.DrawFocusRectangle(
            e.Graphics,
            e.AffectedBounds,
            SystemColors.ControlDarkDark,
            SystemColors.ControlDarkDark);
    }

    // This method renders the GridStrip control's background.
    protected override void OnRenderToolStripBackground(
        ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBackground(e);

        // This late initialization is a workaround. The gradient
        // depends on the bounds of the GridStrip control. The bounds 
        // are dependent on the layout engine, which hasn't fully
        // performed layout by the time the Initialize method runs.
        if (this.backgroundBrush == null)
        {
            this.backgroundBrush = new LinearGradientBrush(
               e.ToolStrip.ClientRectangle,
               SystemColors.ControlLightLight,
               SystemColors.ControlDark,
               90,
               true);
        }

        // Paint the GridStrip control's background.
        e.Graphics.FillRectangle(
            this.backgroundBrush, 
            e.AffectedBounds);
    }

    // This method draws a border around the button's image. If the background
    // to be rendered belongs to the empty cell, a string is drawn. Otherwise,
    // a border is drawn at the edges of the button.
    protected override void OnRenderButtonBackground(
        ToolStripItemRenderEventArgs e)
    {
        base.OnRenderButtonBackground(e);

        // Define some local variables for convenience.
        Graphics g = e.Graphics;
        GridStrip gs = e.ToolStrip as GridStrip;
        ToolStripButton gsb = e.Item as ToolStripButton;

        // Calculate the rectangle around which the border is painted.
        Rectangle imageRectangle = new Rectangle(
            borderThickness, 
            borderThickness, 
            e.Item.Width - 2 * borderThickness, 
            e.Item.Height - 2 * borderThickness);

        // If rendering the empty cell background, draw an 
        // explanatory string, centered in the ToolStripButton.
        if (gsb == gs.EmptyCell)
        {
            e.Graphics.DrawString(
                "Drag to here",
                gsb.Font, 
                SystemBrushes.ControlDarkDark,
                imageRectangle, style);
        }
        else
        {
            // If the button can be a drag source, paint its border red.
            // otherwise, paint its border a dark color.
            Brush b = gs.IsValidDragSource(gsb) ? b = 
                Brushes.Red : SystemBrushes.ControlDarkDark;

            // Draw the top segment of the border.
            Rectangle borderSegment = new Rectangle(
                0, 
                0, 
                e.Item.Width, 
                imageRectangle.Top);
            g.FillRectangle(b, borderSegment);

            // Draw the right segment.
            borderSegment = new Rectangle(
                imageRectangle.Right,
                0,
                e.Item.Bounds.Right - imageRectangle.Right,
                imageRectangle.Bottom);
            g.FillRectangle(b, borderSegment);

            // Draw the left segment.
            borderSegment = new Rectangle(
                0,
                0,
                imageRectangle.Left,
                e.Item.Height);
            g.FillRectangle(b, borderSegment);

            // Draw the bottom segment.
            borderSegment = new Rectangle(
                0,
                imageRectangle.Bottom,
                e.Item.Width,
                e.Item.Bounds.Bottom - imageRectangle.Bottom);
            g.FillRectangle(b, borderSegment);
        }
    }
}
' This class implements a custom ToolStripRenderer for the 
' GridStrip control. It customizes three aspects of the 
' GridStrip control's appearance: GridStrip border, 
' ToolStripButton border, and ToolStripButton image.
Friend Class GridStripRenderer
     Inherits ToolStripRenderer

   ' The style of the empty cell's text.
   Private Shared style As New StringFormat()
   
   ' The thickness (width or height) of a 
   ' ToolStripButton control's border.
   Private Shared borderThickness As Integer = 2
   
   ' The main bitmap that is the source for the 
   ' subimagesthat are assigned to individual 
   ' ToolStripButton controls.
   Private bmp As Bitmap = Nothing
   
   ' The brush that paints the background of 
   ' the GridStrip control.
   Private backgroundBrush As Brush = Nothing
   
   
   ' This is the static constructor. It initializes the
   ' StringFormat for drawing the text in the empty cell.
   Shared Sub New()
      style.Alignment = StringAlignment.Center
      style.LineAlignment = StringAlignment.Center
   End Sub 
   
   ' This method initializes the GridStripRenderer by
   ' creating the image that is used as the source for
   ' the individual button images.
   Protected Overrides Sub Initialize(ts As ToolStrip)
      MyBase.Initialize(ts)
      
      Me.InitializeBitmap(ts)
     End Sub

   ' This method initializes an individual ToolStripButton
   ' control. It copies a subimage from the GridStripRenderer's
   ' main image, according to the position and size of 
   ' the ToolStripButton.
   Protected Overrides Sub InitializeItem(item As ToolStripItem)
      MyBase.InitializeItem(item)
      
         Dim gs As GridStrip = item.Owner
      
      ' The empty cell does not receive a subimage.
         If ((TypeOf (item) Is ToolStripButton) And _
              (item IsNot gs.EmptyCell)) Then
             ' Copy the subimage from the appropriate 
             ' part of the main image.
             Dim subImage As Bitmap = bmp.Clone(item.Bounds, PixelFormat.Undefined)

             ' Assign the subimage to the ToolStripButton
             ' control's Image property.
             item.Image = subImage
         End If
   End Sub 

   ' This utility method creates the main image that
   ' is the source for the subimages of the individual 
   ' ToolStripButton controls.
   Private Sub InitializeBitmap(toolStrip As ToolStrip)
      ' Create the main bitmap, into which the image is drawn.
      Me.bmp = New Bitmap(toolStrip.Size.Width, toolStrip.Size.Height)
      
      ' Draw a fancy pattern. This could be any image or drawing.
      Dim g As Graphics = Graphics.FromImage(bmp)
      Try
         ' Draw smoothed lines.
         g.SmoothingMode = SmoothingMode.AntiAlias
         
         ' Draw the image. In this case, it is 
         ' a number of concentric ellipses. 
         Dim i As Integer
         For i = 0 To toolStrip.Size.Width - 8 Step 8
            g.DrawEllipse(Pens.Blue, 0, 0, i, i)
         Next i
      Finally
         g.Dispose()
      End Try
   End Sub 
   
   ' This method draws a border around the GridStrip control.
   Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
      MyBase.OnRenderToolStripBorder(e)
      
      ControlPaint.DrawFocusRectangle(e.Graphics, e.AffectedBounds, SystemColors.ControlDarkDark, SystemColors.ControlDarkDark)
   End Sub 

   ' This method renders the GridStrip control's background.
   Protected Overrides Sub OnRenderToolStripBackground(e As ToolStripRenderEventArgs)
      MyBase.OnRenderToolStripBackground(e)
      
      ' This late initialization is a workaround. The gradient
      ' depends on the bounds of the GridStrip control. The bounds 
      ' are dependent on the layout engine, which hasn't fully
      ' performed layout by the time the Initialize method runs.
      If Me.backgroundBrush Is Nothing Then
         Me.backgroundBrush = New LinearGradientBrush(e.ToolStrip.ClientRectangle, SystemColors.ControlLightLight, SystemColors.ControlDark, 90, True)
      End If
      
      ' Paint the GridStrip control's background.
      e.Graphics.FillRectangle(Me.backgroundBrush, e.AffectedBounds)
     End Sub

   ' This method draws a border around the button's image. If the background
   ' to be rendered belongs to the empty cell, a string is drawn. Otherwise,
   ' a border is drawn at the edges of the button.
   Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
      MyBase.OnRenderButtonBackground(e)
      
      ' Define some local variables for convenience.
      Dim g As Graphics = e.Graphics
      Dim gs As GridStrip = e.ToolStrip 
      Dim gsb As ToolStripButton = e.Item 
      
      ' Calculate the rectangle around which the border is painted.
      Dim imageRectangle As New Rectangle(borderThickness, borderThickness, e.Item.Width - 2 * borderThickness, e.Item.Height - 2 * borderThickness)
      
      ' If rendering the empty cell background, draw an 
      ' explanatory string, centered in the ToolStripButton.
         If gsb Is gs.EmptyCell Then
             e.Graphics.DrawString("Drag to here", gsb.Font, SystemBrushes.ControlDarkDark, imageRectangle, style)
         Else
             ' If the button can be a drag source, paint its border red.
             ' otherwise, paint its border a dark color.
             Dim b As Brush = IIf(gs.IsValidDragSource(gsb), Brushes.Red, SystemBrushes.ControlDarkDark)

             ' Draw the top segment of the border.
             Dim borderSegment As New Rectangle(0, 0, e.Item.Width, imageRectangle.Top)
             g.FillRectangle(b, borderSegment)

             ' Draw the right segment.
             borderSegment = New Rectangle(imageRectangle.Right, 0, e.Item.Bounds.Right - imageRectangle.Right, imageRectangle.Bottom)
             g.FillRectangle(b, borderSegment)

             ' Draw the left segment.
             borderSegment = New Rectangle(0, 0, imageRectangle.Left, e.Item.Height)
             g.FillRectangle(b, borderSegment)

             ' Draw the bottom segment.
             borderSegment = New Rectangle(0, imageRectangle.Bottom, e.Item.Width, e.Item.Bounds.Bottom - imageRectangle.Bottom)
             g.FillRectangle(b, borderSegment)
         End If
     End Sub
 End Class

注釈

クラスを ToolStripRenderer 使用して、特定のスタイルまたはテーマを に ToolStrip適用します。 に含まれるオブジェクトをToolStripItemユーザー設定で描画ToolStripするのではなく、 プロパティを ToolStrip.Renderer からToolStripRenderer継承する オブジェクトに設定します。 によって ToolStripRenderer 指定された塗りつぶしは、 ToolStrip含まれている項目と同様に に適用されます。

ToolStrip コントロールを使用すると、複数の方法でカスタム描画を行うことができます。 他の Windows フォーム コントロールと同様に、ToolStripToolStripItem のどちらにも、オーバーライド可能 な OnPaint メソッドと Paint イベントがあります。 通常の描画と同様に、座標系の基準はコントロールのクライアント領域です。つまり、コントロールの左上隅が 0, 0 です。 ToolStripItemPaint イベントと OnPaint メソッドは、他のコントロール描画イベントと同様に動作します。

ToolStripRendererクラスには、 の背景、項目の背景、項目イメージ、項目矢印、項目テキスト、および罫線を描画するためのオーバーライド可能なメソッドがありますToolStrip。 これらのメソッドのイベント引数により、四角形、色、テキストの書式など、必要に応じて調整できるいくつかのプロパティが公開されています。

項目の描画方法に関するいくつかの側面だけを調整するには、通常、ToolStripRenderer をオーバーライドします。

新しい項目を作成していて、描画のすべての側面を制御したい場合は、OnPaint メソッドをオーバーライドします。 OnPaint 内から、ToolStripRenderer のメソッドを使用できます。

既定では、ToolStrip によってダブル バッファリングが行われ、OptimizedDoubleBuffer の設定が利用されます。

コンストラクター

ToolStripRenderer()

ToolStripRenderer クラスの新しいインスタンスを初期化します。

フィールド

Offset2X

x 軸に沿ってオフセットを 2 倍にするためのオフセット乗数を取得または設定します。

Offset2Y

y 軸に沿ってオフセットを 2 倍にするためのオフセット乗数を取得または設定します。

メソッド

CreateDisabledImage(Image)

指定したイメージのグレースケールのコピーを作成します。

DrawArrow(ToolStripArrowRenderEventArgs)

ToolStripItem 上に矢印を描画します。

DrawButtonBackground(ToolStripItemRenderEventArgs)

ToolStripButton の背景を描画します。

DrawDropDownButtonBackground(ToolStripItemRenderEventArgs)

ToolStripDropDownButton の背景を描画します。

DrawGrip(ToolStripGripRenderEventArgs)

ToolStrip に移動ハンドルを描画します。

DrawImageMargin(ToolStripRenderEventArgs)

ToolStrip 上のイメージの周りに空白を描画します。

DrawItemBackground(ToolStripItemRenderEventArgs)

ToolStripItem の背景を描画します。

DrawItemCheck(ToolStripItemImageRenderEventArgs)

ToolStripItem 上に、項目が選択されていることを示すイメージを描画します。

DrawItemImage(ToolStripItemImageRenderEventArgs)

ToolStripItem 上にイメージを描画します。

DrawItemText(ToolStripItemTextRenderEventArgs)

ToolStripItem 上にテキストを描画します。

DrawLabelBackground(ToolStripItemRenderEventArgs)

ToolStripLabel の背景を描画します。

DrawMenuItemBackground(ToolStripItemRenderEventArgs)

ToolStripMenuItem の背景を描画します。

DrawOverflowButtonBackground(ToolStripItemRenderEventArgs)

オーバーフロー ボタンの背景を描画します。

DrawSeparator(ToolStripSeparatorRenderEventArgs)

ToolStripSeparator を描画します。

DrawSplitButton(ToolStripItemRenderEventArgs)

ToolStripSplitButton を描画します。

DrawStatusStripSizingGrip(ToolStripRenderEventArgs)

サイズ変更グリップを描画します。

DrawToolStripBackground(ToolStripRenderEventArgs)

ToolStrip の背景を描画します。

DrawToolStripBorder(ToolStripRenderEventArgs)

ToolStrip の境界線を描画します。

DrawToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

ToolStripContentPanel の背景を描画します。

DrawToolStripPanelBackground(ToolStripPanelRenderEventArgs)

ToolStripPanel の背景を描画します。

DrawToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

ToolStripStatusLabel の背景を描画します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Initialize(ToolStrip)

派生クラスでオーバーライドすると、特定の ToolStrip のカスタムの初期化処理を提供します。

InitializeContentPanel(ToolStripContentPanel)

指定した ToolStripContentPanel を初期化します。

InitializeItem(ToolStripItem)

派生クラスでオーバーライドすると、特定の ToolStripItem のカスタムの初期化処理を提供します。

InitializePanel(ToolStripPanel)

指定した ToolStripPanel を初期化します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnRenderArrow(ToolStripArrowRenderEventArgs)

RenderArrow イベントを発生させます。

OnRenderButtonBackground(ToolStripItemRenderEventArgs)

RenderButtonBackground イベントを発生させます。

OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs)

RenderDropDownButtonBackground イベントを発生させます。

OnRenderGrip(ToolStripGripRenderEventArgs)

RenderGrip イベントを発生させます。

OnRenderImageMargin(ToolStripRenderEventArgs)

項目の背景を描画します。

OnRenderItemBackground(ToolStripItemRenderEventArgs)

OnRenderItemBackground(ToolStripItemRenderEventArgs) イベントを発生させます。

OnRenderItemCheck(ToolStripItemImageRenderEventArgs)

RenderItemCheck イベントを発生させます。

OnRenderItemImage(ToolStripItemImageRenderEventArgs)

RenderItemImage イベントを発生させます。

OnRenderItemText(ToolStripItemTextRenderEventArgs)

RenderItemText イベントを発生させます。

OnRenderLabelBackground(ToolStripItemRenderEventArgs)

RenderLabelBackground イベントを発生させます。

OnRenderMenuItemBackground(ToolStripItemRenderEventArgs)

RenderMenuItemBackground イベントを発生させます。

OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs)

RenderOverflowButtonBackground イベントを発生させます。

OnRenderSeparator(ToolStripSeparatorRenderEventArgs)

RenderSeparator イベントを発生させます。

OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs)

OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs) イベントを発生させます。

OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs)

RenderStatusStripSizingGrip イベントを発生させます。

OnRenderToolStripBackground(ToolStripRenderEventArgs)

RenderToolStripBackground イベントを発生させます。

OnRenderToolStripBorder(ToolStripRenderEventArgs)

RenderToolStripBorder イベントを発生させます。

OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

RenderToolStripContentPanelBackground イベントを発生させます。

OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs)

RenderToolStripPanelBackground イベントを発生させます。

OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

RenderToolStripStatusLabelBackground イベントを発生させます。

ScaleArrowOffsetsIfNeeded()

コンピューターの DPI 設定に基づいてスケーリングが求められる場合は、矢印アイコンのスケーリングに値 Offset2X および Offset2Y を適用します。

ScaleArrowOffsetsIfNeeded(Int32)

指定した DPI 値に基づいて矢印アイコンのスケーリングに Offset2X および Offset2Y を適用します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

イベント

RenderArrow

ToolStripItem 上の矢印が描画されたときに発生します。

RenderButtonBackground

ToolStripButton の背景が描画されたときに発生します。

RenderDropDownButtonBackground

ToolStripDropDownButton の背景が描画されたときに発生します。

RenderGrip

ToolStrip の移動ハンドルが描画されたときに発生します。

RenderImageMargin

イメージとそのコンテナーとの間にマージンを描画します。

RenderItemBackground

ToolStripItem の背景が描画されたときに発生します。

RenderItemCheck

選択済みの ToolStripItem のイメージが描画されたときに発生します。

RenderItemImage

ToolStripItem のイメージが描画されたときに発生します。

RenderItemText

ToolStripItem のテキストが描画されたときに発生します。

RenderLabelBackground

ToolStripLabel の背景が描画されたときに発生します。

RenderMenuItemBackground

ToolStripMenuItem の背景が描画されたときに発生します。

RenderOverflowButtonBackground

オーバーフロー ボタンの背景が描画されたときに発生します。

RenderSeparator

ToolStripSeparator が描画されたときに発生します。

RenderSplitButtonBackground

ToolStripSplitButton の背景が描画されたときに発生します。

RenderStatusStripSizingGrip

表示スタイルが変更されたときに発生します。

RenderToolStripBackground

ToolStrip の背景が描画されたときに発生します。

RenderToolStripBorder

ToolStrip の境界線が描画されたときに発生します。

RenderToolStripContentPanelBackground

ToolStripContentPanel の背景を描画します。

RenderToolStripPanelBackground

ToolStripPanel の背景を描画します。

RenderToolStripStatusLabelBackground

ToolStripStatusLabel の背景を描画します。

適用対象

こちらもご覧ください