/*
		 * BuildItemPaintParams
		 */

		/// <summary>
		/// </summary>
		/// <param name="itemParams"></param>
		/// <returns></returns>
		/// <exception cref="ArgumentNullException">
		/// <para>
		///		<paramref name="itemParams"/> is <see langword="null"/>.
		/// </para>
		/// </exception>
		public static NuGenItemPaintParams BuildItemPaintParams(NuGenItemParams itemParams)
		{
			if (itemParams == null)
			{
				throw new ArgumentNullException("itemParams");
			}

			NuGenControlState currentState = NuGenControlState.Normal;

			if ((itemParams.State & DrawItemState.Selected) > 0)
			{
				currentState = NuGenControlState.Hot;
			}

			NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(
				itemParams.Sender,
				itemParams.Graphics,
				itemParams.Bounds,
				currentState
			);

			itemPaintParams.ContentAlign = itemParams.RightToLeft == RightToLeft.No
				? ContentAlignment.MiddleLeft
				: ContentAlignment.MiddleRight
				;
			itemPaintParams.Font = itemParams.Font;
			itemPaintParams.ForeColor = itemParams.ForeColor;
			itemPaintParams.Image = itemParams.Image;
			itemPaintParams.Text = itemParams.Text;

			return itemPaintParams;
		}
Exemple #2
0
        /// <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;
            Rectangle         bounds         = this.ClientRectangle;
            Rectangle         dropDownBounds = this.GetDropDownButtonBounds();
            Rectangle         bodyBounds     = this.GetBodyBounds(dropDownBounds);
            NuGenControlState bodyState      = this.StateTracker.GetControlState();
            NuGenControlState buttonState    = this.ButtonStateTracker.GetControlState();

            NuGenItemPaintParams paintParams = new NuGenItemPaintParams(g);

            paintParams.Bounds       = bodyBounds;
            paintParams.ContentAlign = this.RightToLeft == RightToLeft.No
                                        ? ContentAlignment.MiddleLeft
                                        : ContentAlignment.MiddleRight
            ;
            paintParams.Font      = this.Font;
            paintParams.ForeColor = this.ForeColor;
            paintParams.Image     = this.Image;
            paintParams.Text      = this.Text;
            paintParams.State     = bodyState;

            this.Renderer.DrawDropDownBody(paintParams);

            paintParams.Bounds = dropDownBounds;
            paintParams.State  = buttonState;
            this.Renderer.DrawDropDownButton(paintParams);

            paintParams.Bounds = bounds;
            this.Renderer.DrawBorder(paintParams);
        }
        /*
         * BuildItemPaintParams
         */

        /// <summary>
        /// </summary>
        /// <param name="itemParams"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">
        /// <para>
        ///		<paramref name="itemParams"/> is <see langword="null"/>.
        /// </para>
        /// </exception>
        public static NuGenItemPaintParams BuildItemPaintParams(NuGenItemParams itemParams)
        {
            if (itemParams == null)
            {
                throw new ArgumentNullException("itemParams");
            }

            NuGenControlState currentState = NuGenControlState.Normal;

            if ((itemParams.State & DrawItemState.Selected) > 0)
            {
                currentState = NuGenControlState.Hot;
            }

            NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(
                itemParams.Sender,
                itemParams.Graphics,
                itemParams.Bounds,
                currentState
                );

            itemPaintParams.ContentAlign = itemParams.RightToLeft == RightToLeft.No
                                ? ContentAlignment.MiddleLeft
                                : ContentAlignment.MiddleRight
            ;
            itemPaintParams.Font      = itemParams.Font;
            itemPaintParams.ForeColor = itemParams.ForeColor;
            itemPaintParams.Image     = itemParams.Image;
            itemPaintParams.Text      = itemParams.Text;

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

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

			Font font = paintParams.Font;

			if (font != null)
			{
				paintParams.Font = new Font(font, FontStyle.Bold);
			}

			this.DrawItem(paintParams);
		}
Exemple #6
0
            /*
             * DrawButton
             */

            private void DrawButton(Graphics g, NuGenNavigationButton button)
            {
                Debug.Assert(g != null, "g != null");
                Debug.Assert(button != null, "button != null");

                NuGenControlState buttonState = this.StateTracker.GetControlState();

                if (button == _hoveringButton)
                {
                    buttonState = button == _selectedButton ? NuGenControlState.Pressed : NuGenControlState.Hot;
                }
                else
                {
                    if (button == _selectedButton)
                    {
                        buttonState = NuGenControlState.Pressed;
                    }
                }

                NuGenPaintParams paintParams = new NuGenPaintParams(g);

                paintParams.Bounds = button.Bounds;
                paintParams.State  = buttonState;

                this.Renderer.DrawBackground(paintParams);

                if (button.IsLarge)
                {
                    NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(paintParams);

                    itemPaintParams.ContentAlign = ContentAlignment.MiddleLeft;
                    itemPaintParams.Font         = this.Font;
                    itemPaintParams.ForeColor    = this.ForeColor;
                    itemPaintParams.Image        = button.Image;
                    itemPaintParams.Text         = button.Text;

                    this.Renderer.DrawLargeButtonBody(itemPaintParams);
                    this.Renderer.DrawButtonBorder(paintParams);
                }
                else
                {
                    NuGenImagePaintParams imagePaintParams = new NuGenImagePaintParams(paintParams);
                    imagePaintParams.Image = button.Image;

                    this.Renderer.DrawSmallButtonBody(imagePaintParams);
                }
            }
		/*
		 * BuildItemPaintParams
		 */

		/// <summary>
		/// </summary>
		/// <param name="itemParams"></param>
		/// <returns></returns>
		/// <exception cref="ArgumentNullException">
		/// <para>
		///		<paramref name="itemParams"/> is <see langword="null"/>.
		/// </para>
		/// </exception>
		internal static NuGenItemPaintParams BuildItemPaintParams(NuGenItemParams itemParams)
		{
			if (itemParams == null)
			{
				throw new ArgumentNullException("itemParams");
			}

			NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(itemParams.Graphics);
			itemPaintParams.BackgroundColor = itemParams.BackgroundColor;
			itemPaintParams.Bounds = itemParams.Bounds;
			itemPaintParams.ContentAlign = itemParams.RightToLeft == RightToLeft.No
				? ContentAlignment.MiddleLeft
				: ContentAlignment.MiddleRight
				;
			itemPaintParams.Font = itemParams.Font;
			itemPaintParams.ForeColor = itemParams.ForeColor;
			itemPaintParams.Image = itemParams.Image;
			itemPaintParams.Text = itemParams.Text;
			itemPaintParams.State = NuGenDrawItemStateTranslator.ToControlState(itemParams.State);

			return itemPaintParams;
		}
Exemple #8
0
        /// <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)
        {
            NuGenItemPaintParams paintParams = new NuGenItemPaintParams(e.Graphics);

            paintParams.Bounds = this.ClientRectangle;

            paintParams.ContentAlign = this.RightToLeft == RightToLeft.Yes
                                ? ContentAlignment.MiddleRight
                                : ContentAlignment.MiddleLeft
            ;
            paintParams.Font      = this.Font;
            paintParams.ForeColor = this.ForeColor;
            paintParams.Image     = this.Image;
            paintParams.State     = this.StateTracker.GetControlState();
            paintParams.Text      = this.Text;

            this.Renderer.DrawBackground(paintParams);
            this.Renderer.DrawBody(paintParams);
            this.Renderer.DrawBorder(paintParams);

            base.OnPaint(e);
        }
Exemple #9
0
        /// <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)
        {
            NuGenItemPaintParams titlePaintParams = new NuGenItemPaintParams(e.Graphics);

            titlePaintParams.Bounds = new Rectangle(
                this.ClientRectangle.Left
                , this.ClientRectangle.Top
                , this.ClientRectangle.Width
                , this.TitleHeight
                );

            titlePaintParams.ContentAlign = this.RightToLeft == RightToLeft.Yes
                                ? ContentAlignment.MiddleRight
                                : ContentAlignment.MiddleLeft
            ;
            titlePaintParams.Font      = this.Font;
            titlePaintParams.ForeColor = this.ForeColor;
            titlePaintParams.State     = this.StateTracker.GetControlState();
            titlePaintParams.Text      = this.Text;

            NuGenPaintParams bkgndPaintParams = new NuGenPaintParams(titlePaintParams);

            bkgndPaintParams.Bounds = this.DisplayRectangle;

            NuGenBorderPaintParams borderPaintParams = new NuGenBorderPaintParams(bkgndPaintParams);

            borderPaintParams.Bounds     = this.ClientRectangle;
            borderPaintParams.DrawBorder = this.DrawBorder;

            this.PanelRenderer.DrawBackground(bkgndPaintParams);
            this.PanelRenderer.DrawBorder(borderPaintParams);

            this.TitleRenderer.DrawBackground(titlePaintParams);
            this.TitleRenderer.DrawBody(titlePaintParams);
            this.TitleRenderer.DrawBorder(titlePaintParams);

            base.OnPaint(e);
        }
        /*
         * BuildItemPaintParams
         */

        /// <summary>
        /// </summary>
        /// <param name="itemParams"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">
        /// <para>
        ///		<paramref name="itemParams"/> is <see langword="null"/>.
        /// </para>
        /// </exception>
        internal static NuGenItemPaintParams BuildItemPaintParams(NuGenItemParams itemParams)
        {
            if (itemParams == null)
            {
                throw new ArgumentNullException("itemParams");
            }

            NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(itemParams.Graphics);

            itemPaintParams.BackgroundColor = itemParams.BackgroundColor;
            itemPaintParams.Bounds          = itemParams.Bounds;
            itemPaintParams.ContentAlign    = itemParams.RightToLeft == RightToLeft.No
                                ? ContentAlignment.MiddleLeft
                                : ContentAlignment.MiddleRight
            ;
            itemPaintParams.Font      = itemParams.Font;
            itemPaintParams.ForeColor = itemParams.ForeColor;
            itemPaintParams.Image     = itemParams.Image;
            itemPaintParams.Text      = itemParams.Text;
            itemPaintParams.State     = NuGenDrawItemStateTranslator.ToControlState(itemParams.State);

            return(itemPaintParams);
        }
		/*
		 * DrawItem
		 */

		private new void DrawItem(NuGenItemPaintParams paintParams)
		{
			Debug.Assert(paintParams != null, "paintParams != null");

			Graphics g = paintParams.Graphics;
			Rectangle bounds = paintParams.Bounds;
			NuGenControlState state = paintParams.State;
			Image image = paintParams.Image;
			ContentAlignment align = paintParams.ContentAlign;
			string text = paintParams.Text;

			Rectangle imageBounds = Rectangle.Empty;

			if (image != null)
			{
				imageBounds = NuGenSmoothNavigationBarRenderer.GetLargeImageBounds(bounds, image, align);
				this.DrawImage(g, imageBounds, state, image);
			}

			Rectangle textBounds = NuGenSmoothNavigationBarRenderer.GetTextRectangle(bounds, imageBounds, align);

			if (text != null)
			{
				using (StringFormat sf = NuGenControlPaint.ContentAlignmentToStringFormat(align))
				{
					sf.FormatFlags = StringFormatFlags.NoWrap;
					sf.Trimming = StringTrimming.EllipsisCharacter;
					this.DrawText(
						g,
						textBounds,
						state,
						text,
						paintParams.Font,
						paintParams.ForeColor,
						sf
					);
				}
			}
		}
		/// <summary>
		/// Draws background, image, and text (utilized for e.g. drawing list box items).
		/// </summary>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="paintParams"/> is <see langword="null"/>.</para>
		/// </exception>
		public void DrawItem(NuGenItemPaintParams paintParams)
		{
			if (paintParams == null)
			{
				throw new ArgumentNullException("paintParams");
			}

			this.DrawItemBackground(
				paintParams.Graphics
				, paintParams.Bounds
				, paintParams.State
				, paintParams.BackgroundColor
			);

			this.DrawItemBody(paintParams);
		}
		/// <summary>
		/// Draws only image and text without background (internally called by <see cref="DrawItem"/>
		/// after background is drawn).
		/// </summary>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="paintParams"/> is <see langword="null"/>.</para>
		/// </exception>
		public void DrawItemBody(NuGenItemPaintParams paintParams)
		{
			if (paintParams == null)
			{
				throw new ArgumentNullException("paintParams");
			}

			Rectangle bounds = paintParams.Bounds;
			ContentAlignment align = paintParams.ContentAlign;
			Graphics g = paintParams.Graphics;
			Image image = paintParams.Image;
			NuGenControlState state = paintParams.State;
			string text = paintParams.Text;

			/* Image */

			Rectangle imageBounds = NuGenItemService.GetImageBounds(bounds, image, align);

			if (image != null)
			{
				this.DrawImage(g, imageBounds, state, image);
			}

			/* Text */

			if (text != null)
			{
				using (StringFormat sf = NuGenControlPaint.ContentAlignmentToStringFormat(align))
				{
					sf.FormatFlags = StringFormatFlags.NoWrap;
					sf.Trimming = StringTrimming.EllipsisCharacter;
					this.DrawText(
						g,
						NuGenItemService.GetTextBounds(bounds, imageBounds, align),
						state,
						text,
						paintParams.Font,
						paintParams.ForeColor,
						sf
					);
				}
			}
		}
Exemple #14
0
        private void DrawHeader(Graphics g, Rectangle bounds)
        {
            Debug.Assert(g != null, "g != null");

            int headerHeight        = this.LayoutManager.GetHeaderHeight();
            int collapseButtonWidth = this.LayoutManager.GetCollapseButtonWidth();

            Rectangle headerBounds = new Rectangle(
                bounds.Left
                , bounds.Top + headerHeight
                , bounds.Width
                , headerHeight
                );

            Rectangle headerBodyBounds = headerBounds;

            headerBodyBounds.Width -= collapseButtonWidth;

            if (this.RightToLeft == RightToLeft.Yes)
            {
                headerBodyBounds.X += collapseButtonWidth;
            }

            NuGenControlState    headerState       = this.HeaderStateTracker.GetControlState();
            NuGenItemPaintParams headerPaintParams = new NuGenItemPaintParams(g);

            headerPaintParams.Bounds       = NuGenControlPaint.BorderRectangle(headerBounds);
            headerPaintParams.ContentAlign =
                this.RightToLeft == RightToLeft.Yes
                                        ? ContentAlignment.MiddleRight
                                        : ContentAlignment.MiddleLeft
            ;
            headerPaintParams.Font      = this.Font;
            headerPaintParams.ForeColor = this.ForeColor;
            headerPaintParams.Image     = this.Image;
            headerPaintParams.State     = headerState;
            headerPaintParams.Text      = this.Text;

            this.Renderer.DrawBackground(headerPaintParams);
            this.Renderer.DrawBorder(headerPaintParams);

            headerPaintParams.Bounds = headerBodyBounds;
            this.Renderer.DrawHeader(headerPaintParams);

            Rectangle collapseButtonBounds = new Rectangle(headerBounds.Left, headerBounds.Top, collapseButtonWidth, headerBounds.Height);

            if (this.RightToLeft == RightToLeft.Yes)
            {
                if (!_collapsed)
                {
                    NuGenControlPaint.Make180CCWGraphics(headerPaintParams.Graphics, collapseButtonBounds);
                }
            }
            else
            {
                if (!_collapsed)
                {
                    headerPaintParams.Graphics.RotateTransform(180);
                    headerPaintParams.Graphics.TranslateTransform(
                        -(headerBounds.Width + headerBodyBounds.Width) + 1
                        , -headerHeight + 1
                        );
                }

                collapseButtonBounds.X += headerBodyBounds.Right;
            }

            headerPaintParams.Bounds = collapseButtonBounds;
            this.Renderer.DrawCollapseButton(headerPaintParams);
        }
		/// <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)
		{
			NuGenItemPaintParams titlePaintParams = new NuGenItemPaintParams(e.Graphics);
			titlePaintParams.Bounds = new Rectangle(
				this.ClientRectangle.Left
				, this.ClientRectangle.Top
				, this.ClientRectangle.Width
				, this.TitleHeight
			);

			titlePaintParams.ContentAlign = this.RightToLeft == RightToLeft.Yes
				? ContentAlignment.MiddleRight
				: ContentAlignment.MiddleLeft
				;
			titlePaintParams.Font = this.Font;
			titlePaintParams.ForeColor = this.ForeColor;
			titlePaintParams.State = this.StateTracker.GetControlState();
			titlePaintParams.Text = this.Text;

			NuGenPaintParams bkgndPaintParams = new NuGenPaintParams(titlePaintParams);
			bkgndPaintParams.Bounds = this.DisplayRectangle;

			NuGenBorderPaintParams borderPaintParams = new NuGenBorderPaintParams(bkgndPaintParams);
			borderPaintParams.Bounds = this.ClientRectangle;
			borderPaintParams.DrawBorder = this.DrawBorder;

			this.PanelRenderer.DrawBackground(bkgndPaintParams);
			this.PanelRenderer.DrawBorder(borderPaintParams);

			this.TitleRenderer.DrawBackground(titlePaintParams);
			this.TitleRenderer.DrawBody(titlePaintParams);
			this.TitleRenderer.DrawBorder(titlePaintParams);

			base.OnPaint(e);
		}
Exemple #16
0
		/// <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)
		{
			NuGenItemPaintParams paintParams = new NuGenItemPaintParams(e.Graphics);
			paintParams.Bounds = this.ClientRectangle;

			paintParams.ContentAlign = this.RightToLeft == RightToLeft.Yes
				? ContentAlignment.MiddleRight
				: ContentAlignment.MiddleLeft
				;
			paintParams.Font = this.Font;
			paintParams.ForeColor = this.ForeColor;
			paintParams.Image = this.Image;
			paintParams.State = this.StateTracker.GetControlState();
			paintParams.Text = this.Text;

			this.Renderer.DrawBackground(paintParams);
			this.Renderer.DrawBody(paintParams);
			this.Renderer.DrawBorder(paintParams);

			base.OnPaint(e);
		}
		/// <summary>
		/// </summary>
		/// <param name="paintParams"></param>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="paintParams"/> is <see langword="null"/>.</para>
		/// </exception>
		public void DrawHeader(NuGenItemPaintParams paintParams)
		{
			this.DrawItemBody(paintParams);
		}
			/*
			 * DrawButton
			 */

			private void DrawButton(Graphics g, NuGenNavigationButton button)
			{
				Debug.Assert(g != null, "g != null");
				Debug.Assert(button != null, "button != null");

				NuGenControlState buttonState = this.StateTracker.GetControlState();

				if (button == _hoveringButton)
				{
					buttonState = button == _selectedButton ? NuGenControlState.Pressed : NuGenControlState.Hot;
				}
				else
				{
					if (button == _selectedButton)
					{
						buttonState = NuGenControlState.Pressed;
					}
				}

				NuGenPaintParams paintParams = new NuGenPaintParams(g);
				paintParams.Bounds = button.Bounds;
				paintParams.State = buttonState;

				this.Renderer.DrawBackground(paintParams);

				if (button.IsLarge)
				{
					NuGenItemPaintParams itemPaintParams = new NuGenItemPaintParams(paintParams);

					itemPaintParams.ContentAlign = ContentAlignment.MiddleLeft;
					itemPaintParams.Font = this.Font;
					itemPaintParams.ForeColor = this.ForeColor;
					itemPaintParams.Image = button.Image;
					itemPaintParams.Text = button.Text;

					this.Renderer.DrawLargeButtonBody(itemPaintParams);
					this.Renderer.DrawButtonBorder(paintParams);
				}
				else
				{
					NuGenImagePaintParams imagePaintParams = new NuGenImagePaintParams(paintParams);
					imagePaintParams.Image = button.Image;

					this.Renderer.DrawSmallButtonBody(imagePaintParams);
				}
			}
		/// <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;
			Rectangle bounds = this.ClientRectangle;
			Rectangle dropDownBounds = this.GetDropDownButtonBounds();
			Rectangle bodyBounds = this.GetBodyBounds(dropDownBounds);
			NuGenControlState bodyState = this.StateTracker.GetControlState();
			NuGenControlState buttonState = this.ButtonStateTracker.GetControlState();

			NuGenItemPaintParams paintParams = new NuGenItemPaintParams(g);
			paintParams.Bounds = bodyBounds;
			paintParams.ContentAlign = this.RightToLeft == RightToLeft.No
					? ContentAlignment.MiddleLeft
					: ContentAlignment.MiddleRight
					;
			paintParams.Font = this.Font;
			paintParams.ForeColor = this.ForeColor;
			paintParams.Image = this.Image;
			paintParams.Text = this.Text;
			paintParams.State = bodyState;

			this.Renderer.DrawDropDownBody(paintParams);

			paintParams.Bounds = dropDownBounds;
			paintParams.State = buttonState;
			this.Renderer.DrawDropDownButton(paintParams);

			paintParams.Bounds = bounds;
			this.Renderer.DrawBorder(paintParams);
		}
		private void DrawHeader(Graphics g, Rectangle bounds)
		{
			Debug.Assert(g != null, "g != null");

			int headerHeight = this.LayoutManager.GetHeaderHeight();
			int collapseButtonWidth = this.LayoutManager.GetCollapseButtonWidth();

			Rectangle headerBounds = new Rectangle(
				bounds.Left
				, bounds.Top + headerHeight
				, bounds.Width
				, headerHeight
			);

			Rectangle headerBodyBounds = headerBounds;
			headerBodyBounds.Width -= collapseButtonWidth;

			if (this.RightToLeft == RightToLeft.Yes)
			{
				headerBodyBounds.X += collapseButtonWidth;
			}

			NuGenControlState headerState = this.HeaderStateTracker.GetControlState();
			NuGenItemPaintParams headerPaintParams = new NuGenItemPaintParams(g);
			headerPaintParams.Bounds = NuGenControlPaint.BorderRectangle(headerBounds);
			headerPaintParams.ContentAlign =
				this.RightToLeft == RightToLeft.Yes
					? ContentAlignment.MiddleRight
					: ContentAlignment.MiddleLeft
					;
			headerPaintParams.Font = this.Font;
			headerPaintParams.ForeColor = this.ForeColor;
			headerPaintParams.Image = this.Image;
			headerPaintParams.State = headerState;
			headerPaintParams.Text = this.Text;

			this.Renderer.DrawBackground(headerPaintParams);
			this.Renderer.DrawBorder(headerPaintParams);

			headerPaintParams.Bounds = headerBodyBounds;
			this.Renderer.DrawHeader(headerPaintParams);

			Rectangle collapseButtonBounds = new Rectangle(headerBounds.Left, headerBounds.Top, collapseButtonWidth, headerBounds.Height);

			if (this.RightToLeft == RightToLeft.Yes)
			{
				if (!_collapsed)
				{
					NuGenControlPaint.Make180CCWGraphics(headerPaintParams.Graphics, collapseButtonBounds);
				}
			}
			else
			{
				if (!_collapsed)
				{
					headerPaintParams.Graphics.RotateTransform(180);
					headerPaintParams.Graphics.TranslateTransform(
						-(headerBounds.Width + headerBodyBounds.Width) + 1
						, -headerHeight + 1
					);
				}

				collapseButtonBounds.X += headerBodyBounds.Right;
			}

			headerPaintParams.Bounds = collapseButtonBounds;
			this.Renderer.DrawCollapseButton(headerPaintParams);
		}