TrackBarRenderer Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt methoden die worden gebruikt om een besturingselement voor een trackbalk weer te geven met visuele stijlen. Deze klasse kan niet worden overgenomen.
public ref class TrackBarRenderer sealed
public ref class TrackBarRenderer abstract sealed
public sealed class TrackBarRenderer
public static class TrackBarRenderer
type TrackBarRenderer = class
Public NotInheritable Class TrackBarRenderer
Public Class TrackBarRenderer
- Overname
-
TrackBarRenderer
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een aangepast besturingselement maakt dat gebruikmaakt van de TrackBarRenderer methoden om een horizontale trackbalk te tekenen die reageert op muisklikken.
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::VisualStyles;
namespace TrackBarRendererSample
{
ref class CustomTrackBar : public Control
{
private:
int numberTicks;
Rectangle trackRectangle;
Rectangle ticksRectangle;
Rectangle thumbRectangle;
int currentTickPosition;
float tickSpace;
bool thumbClicked;
TrackBarThumbState thumbState;
public:
CustomTrackBar(int ticks, System::Drawing::Size trackBarSize)
{
this->Location = Point(10, 10);
this->Size = trackBarSize;
this->numberTicks = ticks;
this->BackColor = Color::DarkCyan;
this->DoubleBuffered = true;
numberTicks = 10;
thumbState = TrackBarThumbState::Normal;
// 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;
}
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:
virtual void OnPaint(PaintEventArgs^ e) override
{
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:
virtual void OnMouseDown(MouseEventArgs^ e) override
{
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:
virtual void OnMouseUp(MouseEventArgs^ e) override
{
if (!TrackBarRenderer::IsSupported)
{
return;
}
if (thumbClicked)
{
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:
virtual void OnMouseMove(MouseEventArgs^ e) override
{
if (!TrackBarRenderer::IsSupported)
{
return;
}
// The user is moving the thumb.
if (thumbClicked)
{
// 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
{
if (thumbRectangle.Contains(e->Location))
{
thumbState = TrackBarThumbState::Hot;
}
else
{
thumbState = TrackBarThumbState::Normal;
}
}
Invalidate();
}
};
ref class Form1 : public Form
{
public:
Form1()
{
CustomTrackBar^ TrackBar1 = gcnew CustomTrackBar(19,
System::Drawing::Size(300, 50));
this->Width = 500;
this->Controls->Add(TrackBar1);
}
};
}
[STAThread]
int 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(gcnew TrackBarRendererSample::Form1());
return 0;
}
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)
{
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)
{
// 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();
}
}
}
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
Opmerkingen
De TrackBarRenderer klasse biedt een set static methoden die kunnen worden gebruikt om elk deel van een trackbalkbesturingselement weer te geven met de huidige visuele stijl van het besturingssysteem. Het weergeven van een besturingselement verwijst naar het tekenen van de gebruikersinterface van een besturingselement. Dit is handig als u een aangepast besturingselement tekent dat het uiterlijk van de huidige visuele stijl moet hebben.
Als visuele stijlen zijn ingeschakeld in het besturingssysteem en visuele stijlen worden toegepast op het clientgebied van toepassingsvensters, worden de methoden in deze klasse de trackbalk getekend met de huidige visuele stijl. Anders gooien de methoden in deze klasse een InvalidOperationException. Als u wilt bepalen of de leden van deze klasse kunnen worden gebruikt, kunt u de waarde van de IsSupported eigenschap controleren.
Deze klasse verpakt de functionaliteit van een System.Windows.Forms.VisualStyles.VisualStyleRenderer die is ingesteld op een van de elementen die worden weergegeven door de klasse System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar. Zie Weergavebesturingselementen met visuele stijlen voor meer informatie.
Eigenschappen
| Name | Description |
|---|---|
| IsSupported |
Hiermee haalt u een waarde op die aangeeft of de TrackBarRenderer klasse kan worden gebruikt om een trackbalk met visuele stijlen te tekenen. |
Methoden
| Name | Description |
|---|---|
| DrawBottomPointingThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een omlaag wijzende schuifregelaar (ook wel duim genoemd) met visuele stijlen. |
| DrawHorizontalThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een horizontale schuifregelaar (ook wel duim genoemd) met visuele stijlen. |
| DrawHorizontalTicks(Graphics, Rectangle, Int32, EdgeStyle) |
Hiermee tekent u het opgegeven aantal horizontale maatstreepjes met visuele stijlen. |
| DrawHorizontalTrack(Graphics, Rectangle) |
Hiermee tekent u het spoor voor een horizontale trackbalk met visuele stijlen. |
| DrawLeftPointingThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een schuifregelaar voor links wijzende balk (ook wel duim genoemd) met visuele stijlen. |
| DrawRightPointingThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een aanwijsbalkschuifregelaar (ook wel duim genoemd) met visuele stijlen. |
| DrawTopPointingThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een omhoog wijzende schuifregelaar (ook wel duim genoemd) met visuele stijlen. |
| DrawVerticalThumb(Graphics, Rectangle, TrackBarThumbState) |
Hiermee tekent u een verticale schuifregelaar (ook wel duim genoemd) met visuele stijlen. |
| DrawVerticalTicks(Graphics, Rectangle, Int32, EdgeStyle) |
Hiermee tekent u het opgegeven aantal verticale maatstreepjes met visuele stijlen. |
| DrawVerticalTrack(Graphics, Rectangle) |
Hiermee tekent u het spoor voor een verticale trackbalk met visuele stijlen. |
| GetBottomPointingThumbSize(Graphics, TrackBarThumbState) |
Retourneert de grootte, in pixels, van de schuifregelaar voor de track bar (ook wel de duim genoemd) die omlaag wijst. |
| GetLeftPointingThumbSize(Graphics, TrackBarThumbState) |
Retourneert de grootte, in pixels, van de schuifregelaar voor de track bar (ook wel de duim genoemd) die naar links verwijst. |
| GetRightPointingThumbSize(Graphics, TrackBarThumbState) |
Retourneert de grootte, in pixels, van de schuifregelaar voor de track bar (ook wel de duim genoemd) die naar rechts wijst. |
| GetTopPointingThumbSize(Graphics, TrackBarThumbState) |
Retourneert de grootte, in pixels, van de schuifregelaar voor de track bar (ook wel de duim genoemd) die omhoog wijst. |