481 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			481 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using DevComponents.DotNetBar.Ribbon;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Rendering
 | 
						|
{
 | 
						|
    internal class Office2007SliderPainter : SliderPainter, IOffice2007Painter
 | 
						|
    {
 | 
						|
        #region IOffice2007Painter
 | 
						|
        private Office2007ColorTable m_ColorTable = null; //new Office2007ColorTable();
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets color table used by renderer.
 | 
						|
        /// </summary>
 | 
						|
        public Office2007ColorTable ColorTable
 | 
						|
        {
 | 
						|
            get { return m_ColorTable; }
 | 
						|
            set { m_ColorTable = value; }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
        protected virtual Office2007SliderColorTable GetColorTable(SliderItem item, System.Windows.Forms.Control container)
 | 
						|
        {
 | 
						|
            if (item.ColorTable != null)
 | 
						|
                return item.ColorTable;
 | 
						|
 | 
						|
            if (container == null)
 | 
						|
                return m_ColorTable.Slider;
 | 
						|
 | 
						|
            Office2007ColorTable table = m_ColorTable;
 | 
						|
 | 
						|
            string key = Office2007ColorTable.GetContextualKey(typeof(Office2007SliderColorTable), container.GetType());
 | 
						|
            object st = null;
 | 
						|
 | 
						|
            if (container is Bar)
 | 
						|
            {
 | 
						|
                if (table.ContextualTables.TryGetValue(key + "+" + ((Bar)container).BarType.ToString(), out st))
 | 
						|
                    return (Office2007SliderColorTable)st;
 | 
						|
            }
 | 
						|
 | 
						|
            if (table.ContextualTables.TryGetValue(key, out st))
 | 
						|
                return (Office2007SliderColorTable)st;
 | 
						|
 | 
						|
            return m_ColorTable.Slider;
 | 
						|
        }
 | 
						|
 | 
						|
        public override void Paint(SliderItemRendererEventArgs e)
 | 
						|
        {
 | 
						|
            SliderItem item = e.SliderItem;
 | 
						|
            Office2007SliderColorTable ct = GetColorTable(item, e.ItemPaintArgs.ContainerControl);
 | 
						|
            Office2007SliderStateColorTable decreaseCt = null;
 | 
						|
            Office2007SliderStateColorTable increaseCt = null;
 | 
						|
            Office2007SliderStateColorTable trackCt = null;
 | 
						|
            eDotNetBarStyle effectiveStyle = item.EffectiveStyle;
 | 
						|
 | 
						|
            if (item.GetEnabled())
 | 
						|
            {
 | 
						|
                decreaseCt = ct.Default;
 | 
						|
                increaseCt = ct.Default;
 | 
						|
                trackCt = ct.Default;
 | 
						|
 | 
						|
                if (ct.DecreaseButtonPart != null)
 | 
						|
                    decreaseCt = ct.DecreaseButtonPart.Default;
 | 
						|
                if (ct.IncreaseButtonPart != null)
 | 
						|
                    increaseCt = ct.IncreaseButtonPart.Default;
 | 
						|
                if (ct.TrackPart != null)
 | 
						|
                    trackCt = ct.TrackPart.Default;
 | 
						|
 | 
						|
                if (item.MouseDownPart == eSliderPart.DecreaseButton)
 | 
						|
                {
 | 
						|
                    if (ct.DecreaseButtonPart != null)
 | 
						|
                        decreaseCt = ct.DecreaseButtonPart.Pressed;
 | 
						|
                    else
 | 
						|
                        decreaseCt = ct.Pressed;
 | 
						|
                }
 | 
						|
                else if (item.MouseDownPart == eSliderPart.IncreaseButton)
 | 
						|
                {
 | 
						|
                    if (ct.IncreaseButtonPart != null)
 | 
						|
                        increaseCt = ct.IncreaseButtonPart.Pressed;
 | 
						|
                    else
 | 
						|
                        increaseCt = ct.Pressed;
 | 
						|
                }
 | 
						|
                else if (item.MouseDownPart == eSliderPart.TrackArea)
 | 
						|
                {
 | 
						|
                    if (ct.TrackPart != null)
 | 
						|
                        trackCt = ct.TrackPart.Pressed;
 | 
						|
                    else
 | 
						|
                        trackCt = ct.Pressed;
 | 
						|
                }
 | 
						|
                else if (item.MouseOverPart == eSliderPart.DecreaseButton)
 | 
						|
                {
 | 
						|
                    if (ct.DecreaseButtonPart != null)
 | 
						|
                        decreaseCt = ct.DecreaseButtonPart.MouseOver;
 | 
						|
                    else
 | 
						|
                        decreaseCt = ct.MouseOver;
 | 
						|
                }
 | 
						|
                else if (item.MouseOverPart == eSliderPart.IncreaseButton)
 | 
						|
                {
 | 
						|
                    if (ct.IncreaseButtonPart != null)
 | 
						|
                        increaseCt = ct.IncreaseButtonPart.MouseOver;
 | 
						|
                    else
 | 
						|
                        increaseCt = ct.MouseOver;
 | 
						|
                }
 | 
						|
                else if (item.MouseOverPart == eSliderPart.TrackArea)
 | 
						|
                {
 | 
						|
                    if (ct.TrackPart != null)
 | 
						|
                        trackCt = ct.TrackPart.MouseOver;
 | 
						|
                    else
 | 
						|
                        trackCt = ct.MouseOver;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                decreaseCt = ct.Disabled;
 | 
						|
                increaseCt = ct.Disabled;
 | 
						|
                trackCt = ct.Disabled;
 | 
						|
            }
 | 
						|
 | 
						|
            Rectangle itemRect = item.DisplayRectangle;
 | 
						|
            Rectangle r = item.LabelBounds;
 | 
						|
            Graphics g = e.Graphics;
 | 
						|
 | 
						|
            string text = GetText(item);
 | 
						|
            if (!r.IsEmpty && text.Length > 0)
 | 
						|
            {
 | 
						|
                r.Offset(itemRect.Location);
 | 
						|
                eTextFormat tf = eTextFormat.Default | eTextFormat.WordEllipsis;
 | 
						|
                if (item.LabelPosition == eSliderLabelPosition.Left)
 | 
						|
                    tf |= eTextFormat.Left | eTextFormat.VerticalCenter;
 | 
						|
                else if (item.LabelPosition == eSliderLabelPosition.Right)
 | 
						|
                    tf |= eTextFormat.Right | eTextFormat.VerticalCenter;
 | 
						|
                else if (item.LabelPosition == eSliderLabelPosition.Top)
 | 
						|
                    tf |= eTextFormat.HorizontalCenter | eTextFormat.Top | eTextFormat.WordBreak;
 | 
						|
                else if (item.LabelPosition == eSliderLabelPosition.Bottom)
 | 
						|
                    tf |= eTextFormat.HorizontalCenter | eTextFormat.Bottom | eTextFormat.WordBreak;
 | 
						|
 | 
						|
                Color cl = trackCt.LabelColor;
 | 
						|
                if (e.ItemPaintArgs.ContainerControl is DevComponents.DotNetBar.Controls.Slider)
 | 
						|
                    cl = trackCt.SliderLabelColor;
 | 
						|
 | 
						|
                if (!item.TextColor.IsEmpty)
 | 
						|
                    cl = item.TextColor;
 | 
						|
                if (item.TextMarkupBody == null)
 | 
						|
                {
 | 
						|
#if FRAMEWORK20
 | 
						|
                    if (e.ItemPaintArgs != null && e.ItemPaintArgs.GlassEnabled && item.Parent is CaptionItemContainer && !(e.ItemPaintArgs.ContainerControl is QatToolbar))
 | 
						|
                    {
 | 
						|
                        if (!e.ItemPaintArgs.CachedPaint)
 | 
						|
                            Office2007RibbonControlPainter.PaintTextOnGlass(g, GetText(item), e.ItemPaintArgs.Font, r, TextDrawing.GetTextFormat(tf));
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
#endif
 | 
						|
                    {
 | 
						|
                        if (item.SliderOrientation == eOrientation.Vertical)
 | 
						|
                        {
 | 
						|
                            g.RotateTransform(90);
 | 
						|
                            TextDrawing.DrawString(g, GetText(item), e.ItemPaintArgs.Font, cl, new Rectangle(r.Top, -r.Right, r.Height, r.Width), tf);
 | 
						|
                            g.ResetTransform();
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                            TextDrawing.DrawString(g, GetText(item), e.ItemPaintArgs.Font, cl, r, tf);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    if (item.SliderOrientation == eOrientation.Vertical)
 | 
						|
                    {
 | 
						|
                        g.RotateTransform(90);
 | 
						|
                        TextMarkup.MarkupDrawContext d = new TextMarkup.MarkupDrawContext(g, e.ItemPaintArgs.Font, cl, e.ItemPaintArgs.RightToLeft);
 | 
						|
                        d.HotKeyPrefixVisible = !((tf & eTextFormat.HidePrefix) == eTextFormat.HidePrefix);
 | 
						|
                        item.TextMarkupBody.Bounds = new Rectangle(r.Top, -r.Right, item.TextMarkupBody.Bounds.Width, item.TextMarkupBody.Bounds.Height);
 | 
						|
                        item.TextMarkupBody.Render(d);
 | 
						|
                        g.ResetTransform();
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        TextMarkup.MarkupDrawContext d = new TextMarkup.MarkupDrawContext(g, e.ItemPaintArgs.Font, cl, e.ItemPaintArgs.RightToLeft);
 | 
						|
                        d.HotKeyPrefixVisible = !((tf & eTextFormat.HidePrefix) == eTextFormat.HidePrefix);
 | 
						|
                        item.TextMarkupBody.Bounds = r;
 | 
						|
                        item.TextMarkupBody.Render(d);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            r = item.SlideBounds;
 | 
						|
            int penWidth = Dpi.Width1;
 | 
						|
            if (!r.IsEmpty)
 | 
						|
            {
 | 
						|
                SmoothingMode sm = g.SmoothingMode;
 | 
						|
                g.SmoothingMode = SmoothingMode.None;
 | 
						|
                r.Offset(itemRect.Location);
 | 
						|
                if (item.SliderOrientation == eOrientation.Horizontal)
 | 
						|
                {
 | 
						|
                    // Draw the track line
 | 
						|
                    int ty = r.Y + r.Height / 2 - 1;
 | 
						|
                    int tmx = r.X + r.Width / 2;
 | 
						|
                    if (!trackCt.TrackLineColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineColor, penWidth))
 | 
						|
                        {
 | 
						|
                            g.DrawLine(pen, r.X - 1, ty, r.Right, ty);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!trackCt.TrackLineLightColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        ty++;
 | 
						|
                        tmx++;
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineLightColor, penWidth))
 | 
						|
                        {
 | 
						|
                            if (item.TrackMarker)
 | 
						|
                                g.DrawLine(pen, tmx, ty - 3, tmx, ty + 3);
 | 
						|
                            g.DrawLine(pen, r.X - 1, ty, r.Right, ty);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!trackCt.TrackLineColor.IsEmpty && item.TrackMarker)
 | 
						|
                    {
 | 
						|
                        ty--;
 | 
						|
                        tmx--;
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineColor, penWidth))
 | 
						|
                        {
 | 
						|
                            g.DrawLine(pen, tmx, ty - 3, tmx, ty + 3);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    g.SmoothingMode = sm;
 | 
						|
 | 
						|
                    int tx = 0;
 | 
						|
                    if (e.ItemPaintArgs.RightToLeft)
 | 
						|
                        tx = (int)((r.Width - Dpi.Width11) * (1 - ((item.Maximum - item.Minimum == 0) ? 0 : (float)(item.Value - item.Minimum) / (item.Maximum - item.Minimum))));
 | 
						|
                    else
 | 
						|
                        tx = (int)((r.Width - Dpi.Width11) * ((item.Maximum - item.Minimum == 0) ? 0 : (float)(item.Value - item.Minimum) / (item.Maximum - item.Minimum)));
 | 
						|
 | 
						|
                    // Draw the tracker
 | 
						|
                    Rectangle trackRect = r;
 | 
						|
                    trackRect.X += tx;
 | 
						|
                    trackRect.Width = Dpi.Width11;
 | 
						|
                    trackRect.Height = Dpi.Height15;
 | 
						|
                    trackRect.Y += (r.Height - trackRect.Height) / 2;
 | 
						|
                    PaintSliderPart(trackCt, trackRect, g, eSliderPart.TrackArea, item.SliderOrientation, effectiveStyle);
 | 
						|
                    item.TrackBounds = trackRect;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    // Draw the track line
 | 
						|
                    int tx = r.X + r.Width / 2 - 1;
 | 
						|
                    int tmy = r.Y + r.Height / 2;
 | 
						|
                    if (!trackCt.TrackLineColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineColor, penWidth))
 | 
						|
                        {
 | 
						|
                            g.DrawLine(pen, tx, r.Y - 1, tx, r.Bottom);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!trackCt.TrackLineLightColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        tx++;
 | 
						|
                        tmy++;
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineLightColor, penWidth))
 | 
						|
                        {
 | 
						|
                            if (item.TrackMarker)
 | 
						|
                                g.DrawLine(pen, tx - 3, tmy, tx + 3, tmy);
 | 
						|
                            g.DrawLine(pen, tx, r.Y - 1, tx, r.Bottom);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!trackCt.TrackLineColor.IsEmpty && item.TrackMarker)
 | 
						|
                    {
 | 
						|
                        tx--;
 | 
						|
                        tmy--;
 | 
						|
                        using (Pen pen = new Pen(trackCt.TrackLineColor, penWidth))
 | 
						|
                        {
 | 
						|
                            g.DrawLine(pen, tx - 3, tmy, tx + 3, tmy);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    g.SmoothingMode = sm;
 | 
						|
 | 
						|
                    int ty = 0;
 | 
						|
                    ty = (r.Height - 16) - (int)((r.Height - 11) * ((item.Maximum - item.Minimum == 0) ? 0 : (float)(item.Value - item.Minimum) / (item.Maximum - item.Minimum)));
 | 
						|
 | 
						|
                    // Draw the tracker
 | 
						|
                    Rectangle trackRect = r;
 | 
						|
                    trackRect.Y += ty;
 | 
						|
                    trackRect.Width = Dpi.Width15;
 | 
						|
                    trackRect.Height = Dpi.Height11;
 | 
						|
                    trackRect.X += (r.Width - trackRect.Width) / 2;
 | 
						|
                    PaintSliderPart(trackCt, trackRect, g, eSliderPart.TrackArea, item.SliderOrientation, effectiveStyle);
 | 
						|
                    item.TrackBounds = trackRect;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            r = item.DecreaseBounds;
 | 
						|
            if (!r.IsEmpty)
 | 
						|
            {
 | 
						|
                r.Offset(itemRect.Location);
 | 
						|
                r.Width--;
 | 
						|
                r.Height--;
 | 
						|
                PaintSliderPart(decreaseCt, r, g, eSliderPart.DecreaseButton, item.SliderOrientation, effectiveStyle);
 | 
						|
            }
 | 
						|
 | 
						|
            r = item.IncreaseBounds;
 | 
						|
            if (!r.IsEmpty)
 | 
						|
            {
 | 
						|
                r.Offset(itemRect.Location);
 | 
						|
                r.Width--;
 | 
						|
                r.Height--;
 | 
						|
                PaintSliderPart(increaseCt, r, g, eSliderPart.IncreaseButton, item.SliderOrientation, effectiveStyle);
 | 
						|
            }
 | 
						|
 | 
						|
            base.Paint(e);
 | 
						|
        }
 | 
						|
 | 
						|
        private string GetText(SliderItem item)
 | 
						|
        {
 | 
						|
            return item.Text;
 | 
						|
        }
 | 
						|
 | 
						|
        //private void PaintSliderPart(Office2007SliderStateColorTable ct, Rectangle r, Graphics g, eSliderPart part)
 | 
						|
        //{
 | 
						|
        //    PaintSliderPart(ct, r, g, part, eOrientation.Horizontal, eDotNetBarStyle.Office2010);
 | 
						|
        //}
 | 
						|
 | 
						|
        private void PaintSliderPart(Office2007SliderStateColorTable ct, Rectangle r, Graphics g, eSliderPart part, eOrientation orientation, eDotNetBarStyle effectiveStyle)
 | 
						|
        {
 | 
						|
            if (r.Width <= 0 || r.Height <= 0) return;
 | 
						|
 | 
						|
            if (part == eSliderPart.DecreaseButton || part == eSliderPart.IncreaseButton)
 | 
						|
            {
 | 
						|
                r.Inflate(-1, -1);
 | 
						|
                SmoothingMode sm = g.SmoothingMode;
 | 
						|
                g.SmoothingMode = SmoothingMode.AntiAlias;
 | 
						|
                if (ct.PartBackground.Colors.Count > 0)
 | 
						|
                {
 | 
						|
                    using (Brush brush = DisplayHelp.CreateBrush(r, ct.PartBackground))
 | 
						|
                    {
 | 
						|
                        g.FillEllipse(brush, r);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                if (!ct.PartBorderColor.IsEmpty)
 | 
						|
                {
 | 
						|
                    using (Pen pen = new Pen(ct.PartBorderColor, 1))
 | 
						|
                        g.DrawEllipse(pen, r);
 | 
						|
                }
 | 
						|
 | 
						|
                r.Inflate(1, 1);
 | 
						|
                if (!ct.PartBorderLightColor.IsEmpty)
 | 
						|
                {
 | 
						|
                    using (Pen pen = new Pen(ct.PartBorderLightColor, 1))
 | 
						|
                        g.DrawEllipse(pen, r);
 | 
						|
                }
 | 
						|
                g.SmoothingMode = SmoothingMode.None;
 | 
						|
 | 
						|
                if (part == eSliderPart.DecreaseButton)
 | 
						|
                {
 | 
						|
                    Size ps = new Size(Dpi.Width9, Dpi.Height3);
 | 
						|
                    Rectangle rp = new Rectangle(r.X + (r.Width - ps.Width) / 2, r.Y + (r.Height - ps.Height) / 2, ps.Width, ps.Height);
 | 
						|
                    if (!ct.PartForeLightColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        using (Pen pen = new Pen(ct.PartForeLightColor, 1))
 | 
						|
                            g.DrawRectangle(pen, rp);
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!ct.PartForeColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        rp.Offset(1, 1);
 | 
						|
                        rp.Width--;
 | 
						|
                        rp.Height--;
 | 
						|
                        using (SolidBrush brush = new SolidBrush(ct.PartForeColor))
 | 
						|
                            g.FillRectangle(brush, rp);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else if (part == eSliderPart.IncreaseButton)
 | 
						|
                {
 | 
						|
                    Size ps = new Size(Dpi.Width8, Dpi.Height8);
 | 
						|
                    Rectangle rp = new Rectangle(r.X + (r.Width - ps.Width) / 2, r.Y + (r.Height - ps.Height) / 2, ps.Width, ps.Height);
 | 
						|
                    if (!ct.TrackLineLightColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        using (SolidBrush brush = new SolidBrush(ct.PartForeLightColor))
 | 
						|
                        {
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X, rp.Y + Dpi.Height3, rp.Width + Dpi.Width2, Dpi.Height4));
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X + Dpi.Width3, rp.Y, Dpi.Width4, Dpi.Height3));
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X + Dpi.Width3, rp.Bottom - Dpi.Height1, Dpi.Width4, Dpi.Height3));
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (!ct.TrackLineColor.IsEmpty)
 | 
						|
                    {
 | 
						|
                        using (SolidBrush brush = new SolidBrush(ct.PartForeColor))
 | 
						|
                        {
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X + Dpi.Width1, rp.Y + Dpi.Width4, rp.Width, Dpi.Width2));
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X + Dpi.Width4, rp.Y + Dpi.Height1, Dpi.Width2, Dpi.Height4));
 | 
						|
                            g.FillRectangle(brush, new Rectangle(rp.X + Dpi.Width4, rp.Bottom - Dpi.Width2, Dpi.Width2, Dpi.Height3));
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                g.SmoothingMode = sm;
 | 
						|
            }
 | 
						|
            else if (part == eSliderPart.TrackArea)
 | 
						|
            {
 | 
						|
                if (orientation == eOrientation.Vertical)
 | 
						|
                {
 | 
						|
                    // Left
 | 
						|
                    Matrix m = new Matrix();
 | 
						|
                    m.RotateAt(-90, new PointF(r.X, r.Bottom));
 | 
						|
                    m.Translate(r.Height, r.Width - r.Height, MatrixOrder.Append);
 | 
						|
                    g.Transform = m;
 | 
						|
                }
 | 
						|
                if (StyleManager.IsMetro(effectiveStyle))
 | 
						|
                {
 | 
						|
                    if (!ct.PartBackground.IsEmpty)
 | 
						|
                    {
 | 
						|
                        SmoothingMode sm = g.SmoothingMode;
 | 
						|
                        g.SmoothingMode = SmoothingMode.Default;
 | 
						|
                        Rectangle slideBounds = new Rectangle(r.X + (r.Width - Dpi.Width3) / 2, r.Y + Dpi.Width2, Dpi.Width3, r.Height - Dpi.Width4);
 | 
						|
                        using (Brush brush = DisplayHelp.CreateBrush(slideBounds, ct.PartBackground))
 | 
						|
                        {
 | 
						|
                            g.FillRectangle(brush, slideBounds);
 | 
						|
                        }
 | 
						|
                        g.SmoothingMode = sm;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        int x1 = Dpi.Width11;
 | 
						|
                        path.AddLine(r.X, r.Y, r.X + x1, r.Y);
 | 
						|
                        path.AddLine(r.X + x1, r.Y, r.X + x1, r.Y + Dpi.Height9);
 | 
						|
                        path.AddLine(r.X + x1, r.Y + Dpi.Height9, r.X + Dpi.Width6, r.Y + Dpi.Height15);
 | 
						|
                        path.AddLine(r.X + Dpi.Width5, r.Y + Dpi.Height15, r.X, r.Y + Dpi.Width10);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
                        using (SolidBrush brush = new SolidBrush(ct.PartBorderLightColor))
 | 
						|
                            g.FillPath(brush, path);
 | 
						|
                    }
 | 
						|
 | 
						|
                    SmoothingMode sm = g.SmoothingMode;
 | 
						|
                    g.SmoothingMode = SmoothingMode.AntiAlias;
 | 
						|
                    r.Offset(1, 1);
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        int n2 = Dpi.Width8;
 | 
						|
                        path.AddLine(r.X, r.Y, r.X + n2, r.Y);
 | 
						|
                        path.AddLine(r.X + n2, r.Y + n2, r.X + n2/2, r.Y + Dpi.Height12);
 | 
						|
                        path.AddLine(r.X, r.Y + n2, r.X, r.Y);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
 | 
						|
                        if (ct.PartBackground.Colors.Count > 0)
 | 
						|
                        {
 | 
						|
                            using (Brush brush = DisplayHelp.CreateBrush(Rectangle.Ceiling(path.GetBounds()), ct.PartBackground))
 | 
						|
                            {
 | 
						|
                                g.FillPath(brush, path);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
 | 
						|
                        using (Pen pen = new Pen(ct.PartBorderColor, 1))
 | 
						|
                            g.DrawPath(pen, path);
 | 
						|
                    }
 | 
						|
 | 
						|
                    using (Pen pen = new Pen(Color.FromArgb(200, ct.PartForeColor), 1))
 | 
						|
                        g.DrawLine(pen, r.X + Dpi.Width4, r.Y + Dpi.Height3, r.X + Dpi.Width4, r.Y + Dpi.Height8);
 | 
						|
 | 
						|
                    using (Pen pen = new Pen(ct.PartForeLightColor, 1))
 | 
						|
                        g.DrawLine(pen, r.X + Dpi.Width5, r.Y + Dpi.Height4, r.X + Dpi.Width5, r.Y + Dpi.Height7);
 | 
						|
 | 
						|
                    g.SmoothingMode = sm;
 | 
						|
                }
 | 
						|
 | 
						|
                if (orientation == eOrientation.Vertical)
 | 
						|
                    g.ResetTransform();
 | 
						|
            }
 | 
						|
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |