Esempio n. 1
0
        /*
         * OnPaint
         */

        /// <summary>
        /// Raises the <see cref="E:System.Windows.Forms.Control.Paint"></see> event.
        /// </summary>
        /// <param name="e">A <see cref="T:System.Windows.Forms.PaintEventArgs"></see> that contains the event data.</param>
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            using (SolidBrush sb = new SolidBrush(this.BackColor))
            {
                g.FillRectangle(sb, this.ClientRectangle);
            }

            Rectangle closeButtonBounds = this.CloseButton.Visible ? this.CloseButton.Bounds : Rectangle.Empty;
            Rectangle bounds            = this.LayoutManager.GetContentRectangle(this.ClientRectangle, closeButtonBounds);
            Image     image             = this.Image;

            System.Drawing.ContentAlignment imageAlign = System.Drawing.ContentAlignment.MiddleLeft;
            Rectangle imageBounds = this.LayoutManager.GetImageBounds(new NuGenImageBoundsParams(bounds, image, imageAlign));
            Rectangle textBounds  = this.LayoutManager.GetTextBounds(new NuGenTextBoundsParams(bounds, imageBounds, imageAlign));

            NuGenTabButtonPaintParams tabItemParams = new NuGenTabButtonPaintParams(g, this.ClientRectangle);

            tabItemParams.Font          = this.Font;
            tabItemParams.Image         = this.Image;
            tabItemParams.ImageBounds   = imageBounds;
            tabItemParams.IsRightToLeft = this.RightToLeft == RightToLeft.Yes;
            tabItemParams.Text          = this.Text;

            if (this.Text != null)
            {
                tabItemParams.TextBounds = textBounds;
            }

            if (!this.Enabled)
            {
                tabItemParams.State = TabItemState.Disabled;
            }
            else
            {
                switch (this.TabStateTracker.GetControlState())
                {
                case NuGenControlState.Hot:
                {
                    tabItemParams.State = TabItemState.Hot;
                    break;
                }

                case NuGenControlState.Pressed:
                {
                    tabItemParams.State = TabItemState.Selected;
                    break;
                }
                }
            }

            Debug.Assert(this.TabRenderer != null, "this.TabRenderer != null");
            this.TabRenderer.DrawTabButton(tabItemParams);
        }
Esempio n. 2
0
        /*
         * OnPaint
         */

        /// <summary>
        /// Raises the <see cref="E:System.Windows.Forms.Control.Paint"></see> event.
        /// </summary>
        /// <param name="e">A <see cref="T:System.Windows.Forms.PaintEventArgs"></see> that contains the event data.</param>
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            using (SolidBrush sb = new SolidBrush(this.BackColor))
            {
                g.FillRectangle(sb, this.ClientRectangle);
            }

            Rectangle closeButtonBounds = this.CloseButton.Visible ? this.CloseButton.Bounds : Rectangle.Empty;
            Rectangle bounds            = this.LayoutManager.GetContentRectangle(this.ClientRectangle, closeButtonBounds);
            Image     image             = this.Image;

            System.Drawing.ContentAlignment imageAlign = System.Drawing.ContentAlignment.MiddleLeft;
            Rectangle imageBounds = Rectangle.Empty;

            if (image != null)
            {
                imageBounds = this.LayoutManager.GetImageBounds(
                    new NuGenBoundsParams(
                        bounds
                        , imageAlign
                        , new Rectangle(Point.Empty, image.Size)
                        , this.RightToLeft
                        )
                    );
            }

            Rectangle textBounds = this.LayoutManager.GetTextBounds(
                new NuGenBoundsParams(bounds, imageAlign, imageBounds, this.RightToLeft)
                );

            NuGenTabButtonPaintParams tabItemParams = new NuGenTabButtonPaintParams(g);

            tabItemParams.Bounds      = this.ClientRectangle;
            tabItemParams.Font        = this.Font;
            tabItemParams.Image       = this.Image;
            tabItemParams.ImageBounds = imageBounds;
            tabItemParams.Text        = this.Text;

            if (this.Text != null)
            {
                tabItemParams.TextBounds = textBounds;
            }

            tabItemParams.State = NuGenTabItemStateTranslator.FromControlState(this.TabStateTracker.GetControlState());

            Debug.Assert(this.TabRenderer != null, "this.TabRenderer != null");
            this.TabRenderer.DrawTabButton(tabItemParams);
        }
        /*
         * DrawTabButton
         */

        /// <summary>
        /// </summary>
        /// <param name="paintParams"></param>
        /// <exception cref="ArgumentNullException">
        /// <para>
        ///		<paramref name="paintParams"/> is <see langword="null"/>.
        /// </para>
        /// </exception>
        public void DrawTabButton(NuGenTabButtonPaintParams paintParams)
        {
            if (paintParams == null)
            {
                throw new ArgumentNullException("paintParams");
            }

            Graphics          g            = paintParams.Graphics;
            Rectangle         bounds       = paintParams.Bounds;
            NuGenControlState currentState = NuGenControlState.Normal;

            /* Helps to draw background properly if the BackColor property is set to Color.Transparent. */
            g.FillRectangle(SystemBrushes.Control, new Rectangle(0, 0, bounds.Width, 2));

            switch (paintParams.State)
            {
            case TabItemState.Disabled:
            {
                currentState = NuGenControlState.Disabled;
                break;
            }

            case TabItemState.Hot:
            {
                currentState = NuGenControlState.Hot;
                break;
            }

            case TabItemState.Selected:
            {
                currentState = NuGenControlState.Pressed;
                break;
            }

            default:
            {
                currentState = NuGenControlState.Normal;
                break;
            }
            }

            Rectangle tweakedRectangle = NuGenControlPaint.BorderRectangle(bounds);

            using (NuGenGrfxMode mode = new NuGenGrfxMode(g))
            {
                g.SmoothingMode = SmoothingMode.AntiAlias;
                DrawRoundBackground(g, tweakedRectangle, currentState, NuGenRoundRectangleStyle.TopRound);
                DrawRoundBorder(g, tweakedRectangle, currentState, NuGenRoundRectangleStyle.TopRound);
            }

            this.DrawText(
                g,
                paintParams.TextBounds,
                currentState,
                paintParams.Text,
                paintParams.Font,
                paintParams.ForeColor,
                System.Drawing.ContentAlignment.MiddleLeft
                );

            if (paintParams.Image != null)
            {
                this.DrawImage(
                    g,
                    paintParams.ImageBounds,
                    currentState,
                    paintParams.Image
                    );
            }
        }