TrackBarRenderer クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


TrackBarRenderer クラスには、オペレーティング システムの現在の visual スタイルを使用して、トラック バー コントロールの各部分を描画するために使用できる、一連の static メソッドが用意されています。コントロールの描画とは、コントロールのユーザー インターフェイスを描画することです。これは、現在の visual スタイルの外観を持つカスタム コントロールを描画する場合に役立ちます。
オペレーティング システムで visual スタイルが有効にされており、visual スタイルがアプリケーション ウィンドウのクライアント領域に適用されている場合、このクラスのメソッドは現在の visual スタイルを使用してトラック バーを描画します。それ以外の場合、このクラスのメソッドは InvalidOperationException をスローします。このクラスのメンバを使用できるかどうかを判断するには、IsSupported プロパティの値を確認します。
このクラスは、System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar クラスが公開する要素のいずれかに設定された System.Windows.Forms.VisualStyles.VisualStyleRenderer の機能をラップします。詳細については、「visual スタイルが使用されているコントロールのレンダリング」を参照してください。
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 プラットフォームメモ : visual スタイルは、これらのプラットフォームでのみサポートされます。

TrackBarRenderer メソッドを使用するカスタム コントロールを作成することによって、マウス クリックに応答する水平トラック バーを描画する方法を、次のコード例に示します。
Imports System Imports System.Drawing Imports System.Windows.Forms Imports System.Windows.Forms.VisualStyles Namespace TrackBarRendererSample Class Form1 Inherits Form Public Sub New() Dim TrackBar1 As New CustomTrackBar(19, New Size(300, 50)) Me.Width = 500 Me.Controls.Add(TrackBar1) End Sub <STAThread()> _ Shared Sub Main() ' Note that the call to EnableVisualStyles below does ' not affect whether TrackBarRenderer.IsSupported is true; ' as long as visual styles are enabled by the operating system, ' IsSupported is true. Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class Class CustomTrackBar Inherits Control Private numberTicks As Integer = 10 Private trackRectangle As New Rectangle() Private ticksRectangle As New Rectangle() Private thumbRectangle As New Rectangle() Private currentTickPosition As Integer = 0 Private tickSpace As Single = 0 Private thumbClicked As Boolean = False Private thumbState As TrackBarThumbState = TrackBarThumbState.Normal Public Sub New(ByVal ticks As Integer, ByVal trackBarSize As Size) With Me .Location = New Point(10, 10) .Size = trackBarSize .numberTicks = ticks .BackColor = Color.DarkCyan .DoubleBuffered = True End With ' Calculate the initial sizes of the bar, ' thumb and ticks. SetupTrackBar() End Sub ' Calculate the sizes of the bar, thumb, and ticks rectangle. Private Sub SetupTrackBar() If Not TrackBarRenderer.IsSupported Then Return End If Using g As Graphics = Me.CreateGraphics() ' Calculate the size of the track bar. trackRectangle.X = ClientRectangle.X + 2 trackRectangle.Y = ClientRectangle.Y + 28 trackRectangle.Width = ClientRectangle.Width - 4 trackRectangle.Height = 4 ' Calculate the size of the rectangle in which to ' draw the ticks. ticksRectangle.X = trackRectangle.X + 4 ticksRectangle.Y = trackRectangle.Y - 8 ticksRectangle.Width = trackRectangle.Width - 8 ticksRectangle.Height = 4 tickSpace = (CSng(ticksRectangle.Width) - 1) / _ (CSng(numberTicks) - 1) ' Calculate the size of the thumb. thumbRectangle.Size = _ TrackBarRenderer.GetTopPointingThumbSize( _ g, TrackBarThumbState.Normal) thumbRectangle.X = CurrentTickXCoordinate() thumbRectangle.Y = trackRectangle.Y - 8 End Using End Sub Private Function CurrentTickXCoordinate() As Integer If tickSpace = 0 Then Return 0 Else Return CInt(Math.Round(tickSpace)) * currentTickPosition End If End Function ' Draw the track bar. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) If Not TrackBarRenderer.IsSupported Then Me.Parent.Text = "CustomTrackBar Disabled" Return End If Me.Parent.Text = "CustomTrackBar Enabled" TrackBarRenderer.DrawHorizontalTrack(e.Graphics, _ trackRectangle) TrackBarRenderer.DrawTopPointingThumb(e.Graphics, _ thumbRectangle, thumbState) TrackBarRenderer.DrawHorizontalTicks(e.Graphics, _ ticksRectangle, numberTicks, EdgeStyle.Raised) End Sub ' Determine whether the user has clicked the track bar thumb. Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) If Not TrackBarRenderer.IsSupported Then Return End If If Me.thumbRectangle.Contains(e.Location) Then thumbClicked = True thumbState = TrackBarThumbState.Pressed End If Me.Invalidate() End Sub ' Redraw the track bar thumb if the user has moved it. Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) If Not TrackBarRenderer.IsSupported Then Return End If If thumbClicked = True Then If e.Location.X > trackRectangle.X And _ e.Location.X < trackRectangle.X + _ trackRectangle.Width - thumbRectangle.Width Then thumbClicked = False thumbState = TrackBarThumbState.Hot Me.Invalidate() End If thumbClicked = False End If End Sub ' Track cursor movements. Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs) If Not TrackBarRenderer.IsSupported Then Return End If ' The user is moving the thumb. If thumbClicked = True Then ' Track movements to the next tick to the right, if the ' cursor has moved halfway to the next tick. If currentTickPosition < numberTicks - 1 And _ e.Location.X > CurrentTickXCoordinate() + _ CInt(tickSpace) Then currentTickPosition += 1 ' Track movements to the next tick to the left, if ' the cursor has moved halfway to the next tick. Else If currentTickPosition > 0 And _ e.Location.X < CurrentTickXCoordinate() - _ CInt(tickSpace / 2) Then currentTickPosition -= 1 End If End If thumbRectangle.X = CurrentTickXCoordinate() ' The cursor is passing over the track. Else If thumbRectangle.Contains(e.Location) Then thumbState = TrackBarThumbState.Hot Else thumbState = TrackBarThumbState.Normal End If End If Invalidate() End Sub End Class End Namespace
using System; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; namespace TrackBarRendererSample { class Form1 : Form { public Form1() { CustomTrackBar TrackBar1 = new CustomTrackBar(19, new Size(300, 50)); this.Width = 500; this.Controls.Add(TrackBar1); } [STAThread] static void Main() { // Note that the call to EnableVisualStyles below does // not affect whether TrackBarRenderer.IsSupported is true; // as long as visual styles are enabled by the operating system, // IsSupported is true. Application.EnableVisualStyles(); Application.Run(new Form1()); } } class CustomTrackBar : Control { private int numberTicks = 10; private Rectangle trackRectangle = new Rectangle(); private Rectangle ticksRectangle = new Rectangle(); private Rectangle thumbRectangle = new Rectangle(); private int currentTickPosition = 0; private float tickSpace = 0; private bool thumbClicked = false; private TrackBarThumbState thumbState = TrackBarThumbState.Normal; public CustomTrackBar(int ticks, Size trackBarSize) { this.Location = new Point(10, 10); this.Size = trackBarSize; this.numberTicks = ticks; this.BackColor = Color.DarkCyan; this.DoubleBuffered = true; // Calculate the initial sizes of the bar, // thumb and ticks. SetupTrackBar(); } // Calculate the sizes of the bar, thumb, and ticks rectangle. private void SetupTrackBar() { if (!TrackBarRenderer.IsSupported) return; using (Graphics g = this.CreateGraphics()) { // Calculate the size of the track bar. trackRectangle.X = ClientRectangle.X + 2; trackRectangle.Y = ClientRectangle.Y + 28; trackRectangle.Width = ClientRectangle.Width - 4; trackRectangle.Height = 4; // Calculate the size of the rectangle in which to // draw the ticks. ticksRectangle.X = trackRectangle.X + 4; ticksRectangle.Y = trackRectangle.Y - 8; ticksRectangle.Width = trackRectangle.Width - 8; ticksRectangle.Height = 4; tickSpace = ((float)ticksRectangle.Width - 1) / ((float)numberTicks - 1); // Calculate the size of the thumb. thumbRectangle.Size = TrackBarRenderer.GetTopPointingThumbSize(g, TrackBarThumbState.Normal); thumbRectangle.X = CurrentTickXCoordinate(); thumbRectangle.Y = trackRectangle.Y - 8; } } private int CurrentTickXCoordinate() { if (tickSpace == 0) { return 0; } else { return ((int)Math.Round(tickSpace) * currentTickPosition); } } // Draw the track bar. protected override void OnPaint(PaintEventArgs e) { if (!TrackBarRenderer.IsSupported) { this.Parent.Text = "CustomTrackBar Disabled"; return; } this.Parent.Text = "CustomTrackBar Enabled"; TrackBarRenderer.DrawHorizontalTrack(e.Graphics, trackRectangle); TrackBarRenderer.DrawTopPointingThumb(e.Graphics, thumbRectangle, thumbState); TrackBarRenderer.DrawHorizontalTicks(e.Graphics, ticksRectangle, numberTicks, EdgeStyle.Raised); } // Determine whether the user has clicked the track bar thumb. protected override void OnMouseDown(MouseEventArgs e) { if (!TrackBarRenderer.IsSupported) return; if (this.thumbRectangle.Contains(e.Location)) { thumbClicked = true; thumbState = TrackBarThumbState.Pressed; } this.Invalidate(); } // Redraw the track bar thumb if the user has moved it. protected override void OnMouseUp(MouseEventArgs e) { if (!TrackBarRenderer.IsSupported) return; if (thumbClicked == true) { if (e.Location.X > trackRectangle.X && e.Location.X < (trackRectangle.X + trackRectangle.Width - thumbRectangle.Width)) { thumbClicked = false; thumbState = TrackBarThumbState.Hot; this.Invalidate(); } thumbClicked = false; } } // Track cursor movements. protected override void OnMouseMove(MouseEventArgs e) { if (!TrackBarRenderer.IsSupported) return; // The user is moving the thumb. if (thumbClicked == true) { // Track movements to the next tick to the right, if // the cursor has moved halfway to the next tick. if (currentTickPosition < numberTicks - 1 && e.Location.X > CurrentTickXCoordinate() + (int)(tickSpace)) { currentTickPosition++; } // Track movements to the next tick to the left, if // cursor has moved halfway to the next tick. else if (currentTickPosition > 0 && e.Location.X < CurrentTickXCoordinate() - (int)(tickSpace / 2)) { currentTickPosition--; } thumbRectangle.X = CurrentTickXCoordinate(); } // The cursor is passing over the track. else { thumbState = thumbRectangle.Contains(e.Location) ? TrackBarThumbState.Hot : TrackBarThumbState.Normal; } Invalidate(); } } }

System.Windows.Forms.TrackBarRenderer


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


TrackBarRenderer メンバ
System.Windows.Forms 名前空間
System.Windows.Forms.VisualStyles.VisualStyleRenderer
System.Windows.Forms.VisualStyles.VisualStyleElement
TrackBarRenderer プロパティ


関連項目
TrackBarRenderer クラスSystem.Windows.Forms 名前空間
System.Windows.Forms.VisualStyles.VisualStyleRenderer
System.Windows.Forms.VisualStyles.VisualStyleElement
TrackBarRenderer メソッド


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

関連項目
TrackBarRenderer クラスSystem.Windows.Forms 名前空間
System.Windows.Forms.VisualStyles.VisualStyleRenderer
System.Windows.Forms.VisualStyles.VisualStyleElement
TrackBarRenderer メンバ
visual スタイルを使用してトラック バー コントロールを描画するメソッドを用意します。このクラスは継承できません。
TrackBarRenderer データ型で公開されるメンバを以下の表に示します。



名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

関連項目
TrackBarRenderer クラスSystem.Windows.Forms 名前空間
System.Windows.Forms.VisualStyles.VisualStyleRenderer
System.Windows.Forms.VisualStyles.VisualStyleElement
- TrackBarRendererのページへのリンク