コード例 #1
0
        protected void PaintHeader(Graphics g)
        {
            if (this.headerHeight == 0)
            {
                return;
            }
            Rectangle buttonRect = this.ButtonRectangle;

            CheckBoxState activeState  = CheckBoxState.UncheckedDisabled;
            CheckBoxState expandState  = CheckBoxState.UncheckedDisabled;
            bool          parentExpand = this.ParentUseIndentChildExpand;

            if (!parentExpand && (this.Hints & HintFlags.HasExpandCheck) != HintFlags.None)
            {
                if (this.Enabled && this.CanExpand && (this.Hints & HintFlags.ExpandEnabled) != HintFlags.None)
                {
                    if (!this.Expanded)
                    {
                        if (this.expandCheckPressed)
                        {
                            expandState = CheckBoxState.PlusPressed;
                        }
                        else if (this.expandCheckHovered)
                        {
                            expandState = CheckBoxState.PlusHot;
                        }
                        else
                        {
                            expandState = CheckBoxState.PlusNormal;
                        }
                    }
                    else
                    {
                        if (this.expandCheckPressed)
                        {
                            expandState = CheckBoxState.MinusPressed;
                        }
                        else if (this.expandCheckHovered)
                        {
                            expandState = CheckBoxState.MinusHot;
                        }
                        else
                        {
                            expandState = CheckBoxState.MinusNormal;
                        }
                    }
                }
                else
                {
                    if (this.Expanded)
                    {
                        expandState = CheckBoxState.PlusDisabled;
                    }
                    else
                    {
                        expandState = CheckBoxState.MinusDisabled;
                    }
                }
            }
            if ((this.Hints & HintFlags.HasActiveCheck) != HintFlags.None)
            {
                if (this.Enabled && !this.ReadOnly && (this.Hints & HintFlags.ActiveEnabled) != HintFlags.None)
                {
                    if (this.Active)
                    {
                        if (this.activeCheckPressed)
                        {
                            activeState = CheckBoxState.CheckedPressed;
                        }
                        else if (this.activeCheckHovered)
                        {
                            activeState = CheckBoxState.CheckedHot;
                        }
                        else
                        {
                            activeState = CheckBoxState.CheckedNormal;
                        }
                    }
                    else
                    {
                        if (this.activeCheckPressed)
                        {
                            activeState = CheckBoxState.UncheckedPressed;
                        }
                        else if (this.activeCheckHovered)
                        {
                            activeState = CheckBoxState.UncheckedHot;
                        }
                        else
                        {
                            activeState = CheckBoxState.UncheckedNormal;
                        }
                    }
                }
                else
                {
                    if (this.Active)
                    {
                        activeState = CheckBoxState.CheckedDisabled;
                    }
                    else
                    {
                        activeState = CheckBoxState.UncheckedDisabled;
                    }
                }
            }

            Rectangle iconRect;

            if (this.headerIcon != null)
            {
                iconRect = new Rectangle(
                    this.activeCheckRect.Right + 2,
                    this.headerRect.Y + this.headerRect.Height / 2 - this.headerIcon.Height / 2,
                    this.headerIcon.Width,
                    this.headerIcon.Height);
            }
            else
            {
                iconRect = new Rectangle(this.activeCheckRect.Right, this.headerRect.Y, 0, 0);
            }
            Rectangle textRect = new Rectangle(
                iconRect.Right,
                this.headerRect.Y,
                this.headerRect.Width - buttonRect.Width - iconRect.Width - this.expandCheckRect.Width - this.activeCheckRect.Width - 2,
                this.headerRect.Height);
            Rectangle nameTextRect;
            Rectangle valueTextRect;

            if (!string.IsNullOrEmpty(this.PropertyName) && !string.IsNullOrEmpty(this.headerValueText))
            {
                int nameWidth;
                nameWidth     = this.NameLabelWidth - textRect.X;
                nameTextRect  = new Rectangle(textRect.X, textRect.Y, nameWidth, textRect.Height);
                valueTextRect = new Rectangle(textRect.X + nameWidth, textRect.Y, textRect.Width - nameWidth, textRect.Height);
            }
            else if (!string.IsNullOrEmpty(this.headerValueText))
            {
                nameTextRect  = new Rectangle(textRect.X, textRect.Y, 0, 0);
                valueTextRect = textRect;
            }
            else
            {
                nameTextRect  = textRect;
                valueTextRect = new Rectangle(textRect.X, textRect.Y, 0, 0);
            }


            bool focusBg      = this.Focused || (this is IPopupControlHost && (this as IPopupControlHost).IsDropDownOpened);
            bool focusBgColor = this.headerStyle == GroupHeaderStyle.Flat || this.headerStyle == GroupHeaderStyle.Simple;

            ControlRenderer.DrawGroupHeaderBackground(g, this.headerRect, focusBg && focusBgColor ? this.headerColor.Value.ScaleBrightness(0.85f) : this.headerColor.Value, this.headerStyle);
            if (focusBg && !focusBgColor)
            {
                ControlRenderer.DrawBorder(g, this.headerRect, Renderer.BorderStyle.Simple, BorderState.Normal);
            }

            if (!parentExpand && (this.Hints & HintFlags.HasExpandCheck) != HintFlags.None)
            {
                ControlRenderer.DrawCheckBox(g, this.expandCheckRect.Location, expandState);
            }
            if ((this.Hints & HintFlags.HasActiveCheck) != HintFlags.None)
            {
                ControlRenderer.DrawCheckBox(g, this.activeCheckRect.Location, activeState);
            }

            if (this.headerIcon != null)
            {
                g.DrawImage(this.Enabled ? this.headerIcon.Normal : this.headerIcon.Disabled, iconRect);
            }

            ControlRenderer.DrawStringLine(g,
                                           this.PropertyName,
                                           this.ValueModified ? ControlRenderer.DefaultFontBold : ControlRenderer.DefaultFont,
                                           nameTextRect,
                                           this.Enabled && !this.NonPublic ? ControlRenderer.ColorText : ControlRenderer.ColorGrayText);
            ControlRenderer.DrawStringLine(g,
                                           this.headerValueText,
                                           this.ValueModified ? ControlRenderer.DefaultFontBold : ControlRenderer.DefaultFont,
                                           valueTextRect,
                                           this.Enabled ? ControlRenderer.ColorText : ControlRenderer.ColorGrayText);
        }
コード例 #2
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            Color headerBgColorUpper = ControlRenderer.ColorBackground;
            Color headerBgColorLower = headerBgColorUpper.ScaleBrightness(0.95f);

            GroupedPropertyEditor.DrawGroupHeaderBackground(e.Graphics, this.rectHeader, headerBgColorUpper, GroupedPropertyEditor.GroupHeaderStyle.Emboss);
            GroupedPropertyEditor.DrawGroupHeaderBackground(e.Graphics, this.rectPrefab, headerBgColorLower, GroupedPropertyEditor.GroupHeaderStyle.SmoothSunken);
            if (this.Focused)
            {
                ControlRenderer.DrawBorder(e.Graphics, this.ClientRectangle, AdamsLair.WinForms.Drawing.BorderStyle.Simple, BorderState.Normal);
            }

            CheckBoxState activeState = CheckBoxState.UncheckedDisabled;

            if (!this.ReadOnly && this.Enabled)
            {
                if (!this.active.HasValue)
                {
                    if (this.activeCheckPressed)
                    {
                        activeState = CheckBoxState.MixedPressed;
                    }
                    else if (this.activeCheckHovered)
                    {
                        activeState = CheckBoxState.MixedHot;
                    }
                    else
                    {
                        activeState = CheckBoxState.MixedNormal;
                    }
                }
                else if (this.active.Value)
                {
                    if (this.activeCheckPressed)
                    {
                        activeState = CheckBoxState.CheckedPressed;
                    }
                    else if (this.activeCheckHovered)
                    {
                        activeState = CheckBoxState.CheckedHot;
                    }
                    else
                    {
                        activeState = CheckBoxState.CheckedNormal;
                    }
                }
                else
                {
                    if (this.activeCheckPressed)
                    {
                        activeState = CheckBoxState.UncheckedPressed;
                    }
                    else if (this.activeCheckHovered)
                    {
                        activeState = CheckBoxState.UncheckedHot;
                    }
                    else
                    {
                        activeState = CheckBoxState.UncheckedNormal;
                    }
                }
            }
            else
            {
                if (!this.active.HasValue)
                {
                    activeState = CheckBoxState.MixedDisabled;
                }
                else if (this.active.Value)
                {
                    activeState = CheckBoxState.CheckedDisabled;
                }
                else
                {
                    activeState = CheckBoxState.UncheckedDisabled;
                }
            }
            ControlRenderer.DrawCheckBox(e.Graphics, this.rectCheckActive.Location, activeState);

            Region[] nameLabelRegion = ControlRenderer.MeasureStringLine(e.Graphics, this.displayedName, new[] { new CharacterRange(0, this.displayedName.Length) }, headerNameFont, this.rectLabelName);
            ControlRenderer.DrawStringLine(e.Graphics, this.displayedName, headerNameFont, this.rectLabelName, SystemColors.ControlText);

            if (nameLabelRegion.Length > 0)
            {
                SizeF     nameLabelSize = nameLabelRegion[0].GetBounds(e.Graphics).Size;
                Rectangle extLabelRect  = new Rectangle(
                    this.rectLabelName.X + (int)nameLabelSize.Width,
                    this.rectLabelName.Y,
                    this.rectLabelName.Width - (int)nameLabelSize.Width,
                    this.rectLabelName.Height);
                ControlRenderer.DrawStringLine(e.Graphics, this.displayedNameExt, headerNameExtFont, extLabelRect, SystemColors.ControlText);
            }

            ButtonState buttonStateAdd        = ButtonState.Normal;
            ButtonState buttonStateDefaultAdd = ButtonState.Normal;

            if (this.curButtonPressed)
            {
                buttonStateAdd = ButtonState.Pressed;
            }
            else if (this.curButtonHovered)
            {
                buttonStateAdd = ButtonState.Hot;
            }
            ControlRenderer.DrawButton(e.Graphics, this.rectButtonAddComponent, this.curButton == 4 ? buttonStateAdd : buttonStateDefaultAdd, "+");

            ControlRenderer.DrawStringLine(e.Graphics, "PrefabLink", headerPrefabFont, this.rectLabelPrefab, !this.prefabLinked ? SystemColors.GrayText : (this.prefabLinkAvailable ? Color.Blue : Color.DarkRed));

            ButtonState buttonState             = ButtonState.Disabled;
            ButtonState buttonStateDefault      = ButtonState.Disabled;
            ButtonState buttonStateDefaultBreak = ButtonState.Disabled;

            if (!this.ReadOnly && this.Enabled && this.prefabLinked)
            {
                if (this.prefabLinkAvailable)
                {
                    buttonState        = ButtonState.Normal;
                    buttonStateDefault = ButtonState.Normal;
                }
                buttonStateDefaultBreak = ButtonState.Normal;
            }

            if (this.curButtonPressed)
            {
                buttonState = ButtonState.Pressed;
            }
            else if (this.curButtonHovered)
            {
                buttonState = ButtonState.Hot;
            }

            ControlRenderer.DrawButton(e.Graphics, this.rectButtonPrefabShow, this.curButton == 0 ? buttonState : buttonStateDefault, "Show");
            ControlRenderer.DrawButton(e.Graphics, this.rectButtonPrefabRevert, this.curButton == 1 ? buttonState : buttonStateDefault, "Revert");
            ControlRenderer.DrawButton(e.Graphics, this.rectButtonPrefabApply, this.curButton == 2 ? buttonState : buttonStateDefault, "Apply");
            ControlRenderer.DrawButton(e.Graphics, this.rectButtonPrefabBreak, this.curButton == 3 ? buttonState : buttonStateDefaultBreak, "Break");
        }
コード例 #3
0
        protected internal override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            CheckBoxState boxState   = CheckBoxState.UncheckedNormal;
            bool          boxEnabled = this.Enabled && !this.ReadOnly;
            bool          hot        = this.hovered | this.Focused;

            if (this.state == CheckState.Checked)
            {
                if (!boxEnabled)
                {
                    boxState = CheckBoxState.CheckedDisabled;
                }
                else if (this.pressed)
                {
                    boxState = CheckBoxState.CheckedPressed;
                }
                else if (hot)
                {
                    boxState = CheckBoxState.CheckedHot;
                }
                else
                {
                    boxState = CheckBoxState.CheckedNormal;
                }
            }
            else if (this.state == CheckState.Unchecked)
            {
                if (!boxEnabled)
                {
                    boxState = CheckBoxState.UncheckedDisabled;
                }
                else if (this.pressed)
                {
                    boxState = CheckBoxState.UncheckedPressed;
                }
                else if (hot)
                {
                    boxState = CheckBoxState.UncheckedHot;
                }
                else
                {
                    boxState = CheckBoxState.UncheckedNormal;
                }
            }
            else if (this.state == CheckState.Indeterminate)
            {
                if (!boxEnabled)
                {
                    boxState = CheckBoxState.MixedDisabled;
                }
                else if (this.pressed)
                {
                    boxState = CheckBoxState.MixedPressed;
                }
                else if (hot)
                {
                    boxState = CheckBoxState.MixedHot;
                }
                else
                {
                    boxState = CheckBoxState.MixedNormal;
                }
            }

            Size  boxSize = ControlRenderer.CheckBoxSize;
            Point boxLoc  = new Point(
                this.ClientRectangle.X + 2,
                this.ClientRectangle.Y + this.ClientRectangle.Height / 2 - boxSize.Height / 2);

            ControlRenderer.DrawCheckBox(e.Graphics, boxLoc, boxState);
        }