Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / TrackBarRenderer.cs / 1 / TrackBarRenderer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System;
using System.Drawing;
using System.Diagnostics.CodeAnalysis;
using System.Windows.Forms.VisualStyles;
using Microsoft.Win32;
///
///
///
/// This is a rendering class for the TrackBar control.
///
///
public sealed class TrackBarRenderer {
//Make this per-thread, so that different threads can safely use these methods.
[ThreadStatic]
private static VisualStyleRenderer visualStyleRenderer = null;
const int lineWidth = 2;
//cannot instantiate
private TrackBarRenderer() {
}
///
///
///
/// Returns true if this class is supported for the current OS and user/application settings,
/// otherwise returns false.
///
///
public static bool IsSupported {
get {
return VisualStyleRenderer.IsSupported; // no downlevel support
}
}
///
///
///
/// Renders a horizontal track.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawHorizontalTrack(Graphics g, Rectangle bounds) {
InitializeRenderer(VisualStyleElement.TrackBar.Track.Normal, 1);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a vertical track.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawVerticalTrack(Graphics g, Rectangle bounds) {
InitializeRenderer(VisualStyleElement.TrackBar.TrackVertical.Normal, 1);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a horizontal thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawHorizontalThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.Thumb.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a vertical thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawVerticalThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbVertical.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a constant size left pointing thumb centered in the given bounds.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawLeftPointingThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbLeft.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a constant size right pointing thumb centered in the given bounds.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawRightPointingThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbRight.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a constant size top pointing thumb centered in the given bounds.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawTopPointingThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbTop.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a constant size bottom pointing thumb centered in the given bounds.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawBottomPointingThumb(Graphics g, Rectangle bounds, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbBottom.Normal, (int)state);
visualStyleRenderer.DrawBackground(g, bounds);
}
///
///
///
/// Renders a horizontal tick.
///
///
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] // PM team has reviewed and decided on naming changes already
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawHorizontalTicks(Graphics g, Rectangle bounds, int numTicks, EdgeStyle edgeStyle) {
if (numTicks <= 0 || bounds.Height <= 0 || bounds.Width <= 0 || g == null) {
return;
}
InitializeRenderer(VisualStyleElement.TrackBar.Ticks.Normal, 1);
//trivial case -- avoid calcs
if (numTicks == 1) {
visualStyleRenderer.DrawEdge(g, new Rectangle(bounds.X, bounds.Y, lineWidth, bounds.Height), Edges.Left, edgeStyle, EdgeEffects.None);
return;
}
float inc = ((float)bounds.Width - lineWidth) / ((float)numTicks - 1);
while (numTicks > 0) {
//draw the nth tick
float x = bounds.X + ((float)(numTicks - 1)) * inc;
visualStyleRenderer.DrawEdge(g, new Rectangle((int)Math.Round(x), bounds.Y, lineWidth, bounds.Height), Edges.Left, edgeStyle, EdgeEffects.None);
numTicks--;
}
}
///
///
///
/// Renders a vertical tick.
///
///
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] // PM team has reviewed and decided on naming changes already
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static void DrawVerticalTicks(Graphics g, Rectangle bounds, int numTicks, EdgeStyle edgeStyle) {
if (numTicks<=0 || bounds.Height <= 0 || bounds.Width<=0 || g == null ) {
return;
}
InitializeRenderer(VisualStyleElement.TrackBar.TicksVertical.Normal, 1);
//trivial case
if (numTicks == 1) {
visualStyleRenderer.DrawEdge(g, new Rectangle(bounds.X, bounds.Y, bounds.Width, lineWidth), Edges.Top, edgeStyle, EdgeEffects.None);
return;
}
float inc = ((float)bounds.Height - lineWidth) / ((float)numTicks - 1);
while (numTicks > 0) {
//draw the nth tick
float y = bounds.Y + ((float)(numTicks - 1)) * inc;
visualStyleRenderer.DrawEdge(g, new Rectangle(bounds.X, (int)Math.Round(y), bounds.Width, lineWidth), Edges.Top, edgeStyle, EdgeEffects.None);
numTicks--;
}
}
///
///
///
/// Returns the size of a left pointing thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static Size GetLeftPointingThumbSize(Graphics g, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbLeft.Normal, (int)state);
return (visualStyleRenderer.GetPartSize(g, ThemeSizeType.True));
}
///
///
///
/// Returns the size of a right pointing thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static Size GetRightPointingThumbSize(Graphics g, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbRight.Normal, (int)state);
return (visualStyleRenderer.GetPartSize(g, ThemeSizeType.True));
}
///
///
///
/// Returns the size of a top pointing thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static Size GetTopPointingThumbSize(Graphics g, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbTop.Normal, (int)state);
return (visualStyleRenderer.GetPartSize(g, ThemeSizeType.True));
}
///
///
///
/// Returns the size of a bottom pointing thumb.
///
///
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")] // Using Graphics instead of IDeviceContext intentionally
public static Size GetBottomPointingThumbSize(Graphics g, TrackBarThumbState state) {
InitializeRenderer(VisualStyleElement.TrackBar.ThumbBottom.Normal, (int)state);
return (visualStyleRenderer.GetPartSize(g, ThemeSizeType.True));
}
private static void InitializeRenderer(VisualStyleElement element, int state) {
if (visualStyleRenderer == null) {
visualStyleRenderer = new VisualStyleRenderer(element.ClassName, element.Part, state);
}
else {
visualStyleRenderer.SetParameters(element.ClassName, element.Part, state);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DropShadowEffect.cs
- SqlDataSourceStatusEventArgs.cs
- DbParameterCollectionHelper.cs
- InstalledFontCollection.cs
- LocatorGroup.cs
- ImpersonationContext.cs
- Geometry.cs
- WebPartManagerInternals.cs
- OpenFileDialog.cs
- Avt.cs
- TypeInfo.cs
- SoapProtocolImporter.cs
- DbCommandDefinition.cs
- ProfileGroupSettings.cs
- ComboBox.cs
- WebServiceEnumData.cs
- StylusLogic.cs
- EntityParameter.cs
- ContactManager.cs
- OneOfTypeConst.cs
- AsyncDataRequest.cs
- UnauthorizedAccessException.cs
- LogicalTreeHelper.cs
- ColumnMapCopier.cs
- InternalMappingException.cs
- FormattedText.cs
- serverconfig.cs
- RightsManagementEncryptionTransform.cs
- CalendarDesigner.cs
- DefaultTraceListener.cs
- PtsContext.cs
- DispatchChannelSink.cs
- HierarchicalDataBoundControl.cs
- RawAppCommandInputReport.cs
- DefaultObjectMappingItemCollection.cs
- ClientConfigPaths.cs
- AvTrace.cs
- TileBrush.cs
- ModelTreeEnumerator.cs
- FilterQuery.cs
- WebEventTraceProvider.cs
- ToolStripProgressBar.cs
- RpcCryptoRequest.cs
- NativeMethods.cs
- TileBrush.cs
- UInt16Storage.cs
- LassoSelectionBehavior.cs
- KeyboardEventArgs.cs
- DataGridViewCellParsingEventArgs.cs
- TraceHandler.cs
- WebPart.cs
- StreamGeometry.cs
- MtomMessageEncodingBindingElement.cs
- SEHException.cs
- AdornerLayer.cs
- EventBindingService.cs
- KeyFrames.cs
- SerializationStore.cs
- MasterPageParser.cs
- DeferredTextReference.cs
- SpeechDetectedEventArgs.cs
- SecurityChannelFactory.cs
- DbConnectionFactory.cs
- DrawingVisual.cs
- WriteFileContext.cs
- IntegerValidatorAttribute.cs
- FlowDocumentScrollViewer.cs
- CustomWebEventKey.cs
- XmlSecureResolver.cs
- LayoutManager.cs
- DataGridViewLayoutData.cs
- QuotedPrintableStream.cs
- DataBoundControl.cs
- BitmapImage.cs
- ListView.cs
- ExclusiveTcpListener.cs
- DiscardableAttribute.cs
- CacheDependency.cs
- NodeLabelEditEvent.cs
- ToolStripContainerDesigner.cs
- Group.cs
- Html32TextWriter.cs
- Adorner.cs
- AdornerDecorator.cs
- CacheForPrimitiveTypes.cs
- COSERVERINFO.cs
- SharedDp.cs
- Int16.cs
- MembershipSection.cs
- DefaultEvaluationContext.cs
- OneOfConst.cs
- ReaderWriterLock.cs
- QilDataSource.cs
- ElasticEase.cs
- AtomicFile.cs
- PassportPrincipal.cs
- DllHostInitializer.cs
- UnsafeNativeMethodsPenimc.cs
- ContextBase.cs
- UrlAuthorizationModule.cs