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;
///
///
///
/// This is a rendering class for the Tab control.
///
///
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() {
}
///
///
///
/// 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 Tab item.
///
///
[
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 TabPage.
///
///
[
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- indexingfiltermarshaler.cs
- SID.cs
- WebPart.cs
- WorkItem.cs
- WebPartExportVerb.cs
- PolyLineSegment.cs
- IgnoreSection.cs
- DataGridViewAdvancedBorderStyle.cs
- ActivationArguments.cs
- CroppedBitmap.cs
- ConfigDefinitionUpdates.cs
- XamlStyleSerializer.cs
- DBNull.cs
- AnyAllSearchOperator.cs
- ExclusiveCanonicalizationTransform.cs
- RijndaelManaged.cs
- HttpFileCollectionBase.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- File.cs
- DefaultValueConverter.cs
- TrackingSection.cs
- EntityConnectionStringBuilderItem.cs
- FixedSOMContainer.cs
- LineGeometry.cs
- MatrixTransform3D.cs
- HTMLTagNameToTypeMapper.cs
- ComAwareEventInfo.cs
- ConfigXmlText.cs
- SpecularMaterial.cs
- NegatedConstant.cs
- ControlType.cs
- XmlAttributeOverrides.cs
- LoggedException.cs
- ReverseInheritProperty.cs
- CmsInterop.cs
- SiteMapNode.cs
- ConnectionOrientedTransportElement.cs
- SqlCacheDependencyDatabaseCollection.cs
- DateTimeHelper.cs
- GlobalizationSection.cs
- FontNamesConverter.cs
- Cursors.cs
- StorageComplexPropertyMapping.cs
- UnmanagedMarshal.cs
- OracleParameterCollection.cs
- PackagePartCollection.cs
- WindowsImpersonationContext.cs
- OptionalColumn.cs
- CriticalHandle.cs
- altserialization.cs
- ToolStripDropDownItem.cs
- Button.cs
- LongTypeConverter.cs
- IdnElement.cs
- ParallelDesigner.xaml.cs
- DoubleAverageAggregationOperator.cs
- BaseCodePageEncoding.cs
- HighContrastHelper.cs
- Vector.cs
- TypeToken.cs
- SeverityFilter.cs
- SessionParameter.cs
- EntityDataSource.cs
- ipaddressinformationcollection.cs
- BamlBinaryWriter.cs
- SmiXetterAccessMap.cs
- SqlUnionizer.cs
- UpdatePanel.cs
- DesignBindingValueUIHandler.cs
- PropertyValidationContext.cs
- SQLRoleProvider.cs
- HttpException.cs
- SystemInfo.cs
- BrowserCapabilitiesFactory.cs
- ServiceHostingEnvironment.cs
- WebBrowserUriTypeConverter.cs
- DataGridViewCellPaintingEventArgs.cs
- linebase.cs
- URLString.cs
- CertificateReferenceElement.cs
- ListViewInsertedEventArgs.cs
- RecordBuilder.cs
- RotationValidation.cs
- TagElement.cs
- ValidationResult.cs
- Latin1Encoding.cs
- DetailsViewInsertEventArgs.cs
- HtmlInputCheckBox.cs
- C14NUtil.cs
- KeyedHashAlgorithm.cs
- StandardMenuStripVerb.cs
- PolyBezierSegment.cs
- AnonymousIdentificationModule.cs
- COM2ComponentEditor.cs
- PermissionListSet.cs
- XMLDiffLoader.cs
- ReliableChannelListener.cs
- AllMembershipCondition.cs
- DataColumnPropertyDescriptor.cs
- AbandonedMutexException.cs