DockPanelSkin.cs
上传用户:szlfmled
上传日期:2020-11-22
资源大小:978k
文件大小:15k
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Drawing.Design;
- using System.Windows.Forms.Design;
- using System.ComponentModel;
- namespace WeifenLuo.WinFormsUI.Docking
- {
- #region DockPanelSkin classes
- /// <summary>
- /// The skin to use when displaying the DockPanel.
- /// The skin allows custom gradient color schemes to be used when drawing the
- /// DockStrips and Tabs.
- /// </summary>
- [TypeConverter(typeof(DockPanelSkinConverter))]
- public class DockPanelSkin
- {
- private AutoHideStripSkin m_autoHideStripSkin;
- private DockPaneStripSkin m_dockPaneStripSkin;
- public DockPanelSkin()
- {
- m_autoHideStripSkin = new AutoHideStripSkin();
- m_dockPaneStripSkin = new DockPaneStripSkin();
- }
- /// <summary>
- /// The skin used to display the auto hide strips and tabs.
- /// </summary>
- public AutoHideStripSkin AutoHideStripSkin
- {
- get { return m_autoHideStripSkin; }
- set { m_autoHideStripSkin = value; }
- }
- /// <summary>
- /// The skin used to display the Document and ToolWindow style DockStrips and Tabs.
- /// </summary>
- public DockPaneStripSkin DockPaneStripSkin
- {
- get { return m_dockPaneStripSkin; }
- set { m_dockPaneStripSkin = value; }
- }
- }
- /// <summary>
- /// The skin used to display the auto hide strip and tabs.
- /// </summary>
- [TypeConverter(typeof(AutoHideStripConverter))]
- public class AutoHideStripSkin
- {
- private DockPanelGradient m_dockStripGradient;
- private TabGradient m_TabGradient;
- public AutoHideStripSkin()
- {
- m_dockStripGradient = new DockPanelGradient();
- m_dockStripGradient.StartColor = SystemColors.ControlLight;
- m_dockStripGradient.EndColor = SystemColors.ControlLight;
- m_TabGradient = new TabGradient();
- m_TabGradient.TextColor = SystemColors.ControlDarkDark;
- }
- /// <summary>
- /// The gradient color skin for the DockStrips.
- /// </summary>
- public DockPanelGradient DockStripGradient
- {
- get { return m_dockStripGradient; }
- set { m_dockStripGradient = value; }
- }
- /// <summary>
- /// The gradient color skin for the Tabs.
- /// </summary>
- public TabGradient TabGradient
- {
- get { return m_TabGradient; }
- set { m_TabGradient = value; }
- }
- }
- /// <summary>
- /// The skin used to display the document and tool strips and tabs.
- /// </summary>
- [TypeConverter(typeof(DockPaneStripConverter))]
- public class DockPaneStripSkin
- {
- private DockPaneStripGradient m_DocumentGradient;
- private DockPaneStripToolWindowGradient m_ToolWindowGradient;
- public DockPaneStripSkin()
- {
- m_DocumentGradient = new DockPaneStripGradient();
- m_DocumentGradient.DockStripGradient.StartColor = SystemColors.Control;
- m_DocumentGradient.DockStripGradient.EndColor = SystemColors.Control;
- m_DocumentGradient.ActiveTabGradient.StartColor = SystemColors.ControlLightLight;
- m_DocumentGradient.ActiveTabGradient.EndColor = SystemColors.ControlLightLight;
- m_DocumentGradient.InactiveTabGradient.StartColor = SystemColors.ControlLight;
- m_DocumentGradient.InactiveTabGradient.EndColor = SystemColors.ControlLight;
- m_ToolWindowGradient = new DockPaneStripToolWindowGradient();
- m_ToolWindowGradient.DockStripGradient.StartColor = SystemColors.ControlLight;
- m_ToolWindowGradient.DockStripGradient.EndColor = SystemColors.ControlLight;
-
- m_ToolWindowGradient.ActiveTabGradient.StartColor = SystemColors.Control;
- m_ToolWindowGradient.ActiveTabGradient.EndColor = SystemColors.Control;
-
- m_ToolWindowGradient.InactiveTabGradient.StartColor = Color.Transparent;
- m_ToolWindowGradient.InactiveTabGradient.EndColor = Color.Transparent;
- m_ToolWindowGradient.InactiveTabGradient.TextColor = SystemColors.ControlDarkDark;
-
- m_ToolWindowGradient.ActiveCaptionGradient.StartColor = SystemColors.GradientActiveCaption;
- m_ToolWindowGradient.ActiveCaptionGradient.EndColor = SystemColors.ActiveCaption;
- m_ToolWindowGradient.ActiveCaptionGradient.LinearGradientMode = LinearGradientMode.Vertical;
- m_ToolWindowGradient.ActiveCaptionGradient.TextColor = SystemColors.ActiveCaptionText;
- m_ToolWindowGradient.InactiveCaptionGradient.StartColor = SystemColors.GradientInactiveCaption;
- m_ToolWindowGradient.InactiveCaptionGradient.EndColor = SystemColors.GradientInactiveCaption;
- m_ToolWindowGradient.InactiveCaptionGradient.LinearGradientMode = LinearGradientMode.Vertical;
- m_ToolWindowGradient.InactiveCaptionGradient.TextColor = SystemColors.ControlText;
- }
- /// <summary>
- /// The skin used to display the Document style DockPane strip and tab.
- /// </summary>
- public DockPaneStripGradient DocumentGradient
- {
- get { return m_DocumentGradient; }
- set { m_DocumentGradient = value; }
- }
- /// <summary>
- /// The skin used to display the ToolWindow style DockPane strip and tab.
- /// </summary>
- public DockPaneStripToolWindowGradient ToolWindowGradient
- {
- get { return m_ToolWindowGradient; }
- set { m_ToolWindowGradient = value; }
- }
- }
- /// <summary>
- /// The skin used to display the DockPane ToolWindow strip and tab.
- /// </summary>
- [TypeConverter(typeof(DockPaneStripGradientConverter))]
- public class DockPaneStripToolWindowGradient : DockPaneStripGradient
- {
- private TabGradient m_activeCaptionGradient;
- private TabGradient m_inactiveCaptionGradient;
- public DockPaneStripToolWindowGradient()
- {
- m_activeCaptionGradient = new TabGradient();
- m_inactiveCaptionGradient = new TabGradient();
- }
- /// <summary>
- /// The skin used to display the active ToolWindow caption.
- /// </summary>
- public TabGradient ActiveCaptionGradient
- {
- get { return m_activeCaptionGradient; }
- set { m_activeCaptionGradient = value; }
- }
- /// <summary>
- /// The skin used to display the inactive ToolWindow caption.
- /// </summary>
- public TabGradient InactiveCaptionGradient
- {
- get { return m_inactiveCaptionGradient; }
- set { m_inactiveCaptionGradient = value; }
- }
- }
- /// <summary>
- /// The skin used to display the DockPane strip and tab.
- /// </summary>
- [TypeConverter(typeof(DockPaneStripGradientConverter))]
- public class DockPaneStripGradient
- {
- private DockPanelGradient m_dockStripGradient;
- private TabGradient m_activeTabGradient;
- private TabGradient m_inactiveTabGradient;
- public DockPaneStripGradient()
- {
- m_dockStripGradient = new DockPanelGradient();
- m_activeTabGradient = new TabGradient();
- m_inactiveTabGradient = new TabGradient();
- }
- /// <summary>
- /// The gradient color skin for the DockStrip.
- /// </summary>
- public DockPanelGradient DockStripGradient
- {
- get { return m_dockStripGradient; }
- set { m_dockStripGradient = value; }
- }
- /// <summary>
- /// The skin used to display the active DockPane tabs.
- /// </summary>
- public TabGradient ActiveTabGradient
- {
- get { return m_activeTabGradient; }
- set { m_activeTabGradient = value; }
- }
- /// <summary>
- /// The skin used to display the inactive DockPane tabs.
- /// </summary>
- public TabGradient InactiveTabGradient
- {
- get { return m_inactiveTabGradient; }
- set { m_inactiveTabGradient = value; }
- }
- }
- /// <summary>
- /// The skin used to display the dock pane tab
- /// </summary>
- [TypeConverter(typeof(DockPaneTabGradientConverter))]
- public class TabGradient : DockPanelGradient
- {
- private Color m_textColor;
- public TabGradient()
- {
- m_textColor = SystemColors.ControlText;
- }
- /// <summary>
- /// The text color.
- /// </summary>
- [DefaultValue(typeof(SystemColors), "ControlText")]
- public Color TextColor
- {
- get { return m_textColor; }
- set { m_textColor = value; }
- }
- }
- /// <summary>
- /// The gradient color skin.
- /// </summary>
- [TypeConverter(typeof(DockPanelGradientConverter))]
- public class DockPanelGradient
- {
- private Color m_startColor;
- private Color m_endColor;
- private LinearGradientMode m_linearGradientMode;
- public DockPanelGradient()
- {
- m_startColor = SystemColors.Control;
- m_endColor = SystemColors.Control;
- m_linearGradientMode = LinearGradientMode.Horizontal;
- }
- /// <summary>
- /// The beginning gradient color.
- /// </summary>
- [DefaultValue(typeof(SystemColors), "Control")]
- public Color StartColor
- {
- get { return m_startColor; }
- set { m_startColor = value; }
- }
- /// <summary>
- /// The ending gradient color.
- /// </summary>
- [DefaultValue(typeof(SystemColors), "Control")]
- public Color EndColor
- {
- get { return m_endColor; }
- set { m_endColor = value; }
- }
- /// <summary>
- /// The gradient mode to display the colors.
- /// </summary>
- [DefaultValue(LinearGradientMode.Horizontal)]
- public LinearGradientMode LinearGradientMode
- {
- get { return m_linearGradientMode; }
- set { m_linearGradientMode = value; }
- }
- }
- #endregion
- #region Converters
- public class DockPanelSkinConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPanelSkin))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is DockPanelSkin)
- {
- return "DockPanelSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- public class DockPanelGradientConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPanelGradient))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is DockPanelGradient)
- {
- return "DockPanelGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- public class AutoHideStripConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(AutoHideStripSkin))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is AutoHideStripSkin)
- {
- return "AutoHideStripSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- public class DockPaneStripConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPaneStripSkin))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is DockPaneStripSkin)
- {
- return "DockPaneStripSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- public class DockPaneStripGradientConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPaneStripGradient))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is DockPaneStripGradient)
- {
- return "DockPaneStripGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- public class DockPaneTabGradientConverter : ExpandableObjectConverter
- {
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(TabGradient))
- return true;
- return base.CanConvertTo(context, destinationType);
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- if (destinationType == typeof(String) && value is TabGradient)
- {
- return "DockPaneTabGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- }
- #endregion
- }