Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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; ////// /// 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() { } ////// This is a rendering class for the TrackBar control. /// ////// /// public static bool IsSupported { get { return VisualStyleRenderer.IsSupported; // no downlevel support } } ////// Returns true if this class is supported for the current OS and user/application settings, /// otherwise returns false. /// ////// /// [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 horizontal 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 vertical track. /// ////// /// [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 horizontal 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 vertical thumb. /// ////// /// [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 left 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 right 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 top 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 constant size bottom pointing thumb centered in the given bounds. /// ////// /// [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 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 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--; } } ////// Renders a vertical tick. /// ////// /// [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 left 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 right 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 top 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. //------------------------------------------------------------------------------ ///// Returns the size of a bottom pointing thumb. /// ///// 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; ////// /// 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() { } ////// This is a rendering class for the TrackBar control. /// ////// /// public static bool IsSupported { get { return VisualStyleRenderer.IsSupported; // no downlevel support } } ////// Returns true if this class is supported for the current OS and user/application settings, /// otherwise returns false. /// ////// /// [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 horizontal 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 vertical track. /// ////// /// [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 horizontal 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 vertical thumb. /// ////// /// [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 left 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 right 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 top 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 constant size bottom pointing thumb centered in the given bounds. /// ////// /// [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 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 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--; } } ////// Renders a vertical tick. /// ////// /// [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 left 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 right 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 top 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./// Returns the size of a bottom pointing thumb. /// ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SeverityFilter.cs
- OracleEncoding.cs
- DetailsViewDeleteEventArgs.cs
- FillBehavior.cs
- GuidTagList.cs
- ForceCopyBuildProvider.cs
- ProtectedProviderSettings.cs
- DeploymentExceptionMapper.cs
- MailAddressCollection.cs
- EntityCommandDefinition.cs
- HierarchicalDataSourceControl.cs
- ToolStripItemClickedEventArgs.cs
- DelayedRegex.cs
- __Error.cs
- Timer.cs
- AttributeData.cs
- XPathAncestorIterator.cs
- StylusPointPropertyInfo.cs
- Relationship.cs
- TextServicesCompartmentEventSink.cs
- ExternalException.cs
- ProjectionRewriter.cs
- GenericPrincipal.cs
- UnsafeNativeMethods.cs
- TrustManager.cs
- QueueProcessor.cs
- PathFigure.cs
- DecodeHelper.cs
- StylesEditorDialog.cs
- PeerChannelFactory.cs
- diagnosticsswitches.cs
- TabPageDesigner.cs
- DSACryptoServiceProvider.cs
- MessagePropertyDescriptionCollection.cs
- PowerModeChangedEventArgs.cs
- HttpException.cs
- GridViewSortEventArgs.cs
- TimeoutStream.cs
- ToolStripControlHost.cs
- OptimizedTemplateContentHelper.cs
- PreservationFileWriter.cs
- Triangle.cs
- ButtonField.cs
- SchemaImporterExtensionElement.cs
- ListViewCancelEventArgs.cs
- BamlResourceContent.cs
- Decoder.cs
- FileDataSourceCache.cs
- SqlClientMetaDataCollectionNames.cs
- FontResourceCache.cs
- ResetableIterator.cs
- DiagnosticsConfiguration.cs
- DataGridViewColumn.cs
- DoubleAnimation.cs
- KeyValueConfigurationCollection.cs
- TextEditorLists.cs
- CompoundFileDeflateTransform.cs
- DataErrorValidationRule.cs
- DoubleCollection.cs
- AccessViolationException.cs
- DashStyle.cs
- DependsOnAttribute.cs
- PersonalizationStateInfo.cs
- OrderedDictionary.cs
- ContentElement.cs
- ClaimTypeRequirement.cs
- WebConvert.cs
- filewebrequest.cs
- Grant.cs
- PropertyEmitterBase.cs
- TemplateKey.cs
- GZipUtils.cs
- KnownTypes.cs
- ListViewPagedDataSource.cs
- SecurityPolicyVersion.cs
- DebugHandleTracker.cs
- UnmanagedBitmapWrapper.cs
- LinkedResourceCollection.cs
- ModuleBuilder.cs
- ClientSponsor.cs
- TraceContext.cs
- RelationshipEndCollection.cs
- NamedPipeTransportElement.cs
- Latin1Encoding.cs
- LookupNode.cs
- AnnotationComponentManager.cs
- EntryWrittenEventArgs.cs
- XmlBoundElement.cs
- NamespaceQuery.cs
- BitmapImage.cs
- autovalidator.cs
- UIElementHelper.cs
- WebPartUtil.cs
- TransformerInfoCollection.cs
- NetTcpBindingCollectionElement.cs
- RegexCharClass.cs
- BaseUriHelper.cs
- GroupBoxAutomationPeer.cs
- ModelUIElement3D.cs
- ImageSourceValueSerializer.cs