Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / TabRenderer.cs / 1 / TabRenderer.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.Internal; using System.Windows.Forms.VisualStyles; using Microsoft.Win32; ////// /// public sealed class TabRenderer { //Make this per-thread, so that different threads can safely use these methods. [ThreadStatic] private static VisualStyleRenderer visualStyleRenderer = null; //cannot instantiate private TabRenderer() { } ////// This is a rendering class for the Tab 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 DrawTabItem(Graphics g, Rectangle bounds, TabItemState state) { InitializeRenderer(VisualStyleElement.Tab.TabItem.Normal, (int)state); visualStyleRenderer.DrawBackground(g, bounds); } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, bool focused, TabItemState state) { InitializeRenderer(VisualStyleElement.Tab.TabItem.Normal, (int)state); visualStyleRenderer.DrawBackground(g, bounds); // I need this hack since GetBackgroundContentRectangle() returns same rectangle // as bounds for this control! Rectangle contentBounds = Rectangle.Inflate(bounds, -3, -3); if (focused) { ControlPaint.DrawFocusRectangle(g, contentBounds); } } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, string tabItemText, Font font, TabItemState state) { DrawTabItem(g, bounds, tabItemText, font, false, state); } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, string tabItemText, Font font, bool focused, TabItemState state) { DrawTabItem(g, bounds, tabItemText, font, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.SingleLine, focused, state); } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, string tabItemText, Font font, TextFormatFlags flags, bool focused, TabItemState state) { InitializeRenderer(VisualStyleElement.Tab.TabItem.Normal, (int)state); visualStyleRenderer.DrawBackground(g, bounds); // I need this hack since GetBackgroundContentRectangle() returns same rectangle // as bounds for this control! Rectangle contentBounds = Rectangle.Inflate(bounds, -3, -3); Color textColor = visualStyleRenderer.GetColor(ColorProperty.TextColor); TextRenderer.DrawText(g, tabItemText, font, contentBounds, textColor, flags); if (focused) { ControlPaint.DrawFocusRectangle(g, contentBounds); } } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, Image image, Rectangle imageRectangle, bool focused, TabItemState state) { InitializeRenderer(VisualStyleElement.Tab.TabItem.Normal, (int)state); visualStyleRenderer.DrawBackground(g, bounds); // I need this hack since GetBackgroundContentRectangle() returns same rectangle // as bounds for this control! Rectangle contentBounds = Rectangle.Inflate(bounds, -3, -3); visualStyleRenderer.DrawImage(g, imageRectangle, image); if (focused) { ControlPaint.DrawFocusRectangle(g, contentBounds); } } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, string tabItemText, Font font, Image image, Rectangle imageRectangle, bool focused, TabItemState state) { DrawTabItem(g, bounds, tabItemText, font, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.SingleLine, image, imageRectangle, focused, state); } ////// Renders a Tab item. /// ////// /// public static void DrawTabItem(Graphics g, Rectangle bounds, string tabItemText, Font font, TextFormatFlags flags, Image image, Rectangle imageRectangle, bool focused, TabItemState state) { InitializeRenderer(VisualStyleElement.Tab.TabItem.Normal, (int)state); visualStyleRenderer.DrawBackground(g, bounds); // I need this hack since GetBackgroundContentRectangle() returns same rectangle // as bounds for this control! Rectangle contentBounds = Rectangle.Inflate(bounds, -3, -3); visualStyleRenderer.DrawImage(g, imageRectangle, image); Color textColor = visualStyleRenderer.GetColor(ColorProperty.TextColor); TextRenderer.DrawText(g, tabItemText, font, contentBounds, textColor, flags); if (focused) { ControlPaint.DrawFocusRectangle(g, contentBounds); } } ////// Renders a Tab item. /// ////// /// [ SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters") // Using Graphics instead of IDeviceContext intentionally ] public static void DrawTabPage(Graphics g, Rectangle bounds) { InitializeRenderer(VisualStyleElement.Tab.Pane.Normal, 0); visualStyleRenderer.DrawBackground(g, bounds); } 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./// Renders a TabPage. /// ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridView.cs
- FormViewInsertEventArgs.cs
- NTAccount.cs
- DesignConnection.cs
- GenericsInstances.cs
- SubMenuStyleCollection.cs
- NativeMethods.cs
- MetafileHeader.cs
- CustomValidator.cs
- PerformanceCounterPermissionEntry.cs
- FormsAuthenticationUserCollection.cs
- SeverityFilter.cs
- OracleEncoding.cs
- ComponentRenameEvent.cs
- XmlSchemaProviderAttribute.cs
- BrowserCapabilitiesCodeGenerator.cs
- TreeViewImageKeyConverter.cs
- CodePrimitiveExpression.cs
- Symbol.cs
- SchemaNamespaceManager.cs
- TextServicesDisplayAttributePropertyRanges.cs
- XmlBinaryReaderSession.cs
- MenuEventArgs.cs
- ProtocolsSection.cs
- MouseCaptureWithinProperty.cs
- TrackingMemoryStreamFactory.cs
- AspNetRouteServiceHttpHandler.cs
- HostedHttpRequestAsyncResult.cs
- RenderingBiasValidation.cs
- Setter.cs
- DataSourceCache.cs
- Trigger.cs
- CommandHelper.cs
- RuntimeConfigurationRecord.cs
- XmlHierarchyData.cs
- FormsAuthenticationTicket.cs
- WebPartEditorOkVerb.cs
- xmlfixedPageInfo.cs
- Pen.cs
- ButtonField.cs
- BindingContext.cs
- XmlSchema.cs
- PackagingUtilities.cs
- CategoryGridEntry.cs
- StringDictionary.cs
- SafeThemeHandle.cs
- DataGridState.cs
- CodeCastExpression.cs
- Animatable.cs
- Group.cs
- SkinIDTypeConverter.cs
- BitmapImage.cs
- ADMembershipProvider.cs
- ComponentChangingEvent.cs
- LineServices.cs
- BamlRecords.cs
- altserialization.cs
- SynchronousChannelMergeEnumerator.cs
- BindMarkupExtensionSerializer.cs
- GroupBox.cs
- SystemIPInterfaceProperties.cs
- StretchValidation.cs
- ECDiffieHellmanCngPublicKey.cs
- odbcmetadatacolumnnames.cs
- XmlSchemaNotation.cs
- controlskin.cs
- DoubleLinkList.cs
- RelationshipWrapper.cs
- ScriptDescriptor.cs
- CryptoApi.cs
- DataServiceCollectionOfT.cs
- StorageBasedPackageProperties.cs
- NameService.cs
- PrefixQName.cs
- EventLogPermissionEntry.cs
- DoWorkEventArgs.cs
- Thumb.cs
- DayRenderEvent.cs
- VirtualPath.cs
- DataGridViewColumnEventArgs.cs
- ModelItem.cs
- ItemCollection.cs
- BinaryParser.cs
- XmlHierarchyData.cs
- SkinIDTypeConverter.cs
- PathSegmentCollection.cs
- MarkupCompiler.cs
- HotCommands.cs
- Renderer.cs
- WebPartAddingEventArgs.cs
- DataContext.cs
- Events.cs
- StateWorkerRequest.cs
- SqlBulkCopyColumnMappingCollection.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- NavigationPropertyEmitter.cs
- WebPartDeleteVerb.cs
- OwnerDrawPropertyBag.cs
- HttpCachePolicy.cs
- CalendarModeChangedEventArgs.cs