130 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Drawing;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.Instrumentation
 | 
						|
{
 | 
						|
    internal abstract class GaugeFrameRenderer
 | 
						|
    {
 | 
						|
        #region Private variables
 | 
						|
 | 
						|
        private GaugeFrame _GaugeFrame;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        protected GaugeFrameRenderer(GaugeFrame gaugeFrame)
 | 
						|
        {
 | 
						|
            _GaugeFrame = gaugeFrame;
 | 
						|
        }
 | 
						|
 | 
						|
        #region Abstract methods
 | 
						|
 | 
						|
        internal abstract void SetBackClipRegion(PaintEventArgs e);
 | 
						|
        internal abstract void PreRenderContent(PaintEventArgs e);
 | 
						|
        internal abstract void PostRenderContent(PaintEventArgs e);
 | 
						|
 | 
						|
        protected abstract void RenderFrameByAngle(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderFrameByCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderFrameByHorizontalCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderFrameByVerticalCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderFrameByNone(PaintEventArgs e, Rectangle r);
 | 
						|
 | 
						|
        protected abstract void RenderBackByAngle(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderBackByCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderBackByHorizontalCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderBackByVerticalCenter(PaintEventArgs e, Rectangle r);
 | 
						|
        protected abstract void RenderBackByNone(PaintEventArgs e, Rectangle r);
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Protected properties
 | 
						|
 | 
						|
        protected GaugeFrame GaugeFrame
 | 
						|
        {
 | 
						|
            get { return (_GaugeFrame); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetFrameRegion
 | 
						|
 | 
						|
        internal virtual void SetFrameRegion()
 | 
						|
        {
 | 
						|
            if (GaugeFrame.GaugeControl != null)
 | 
						|
                GaugeFrame.GaugeControl.Region = null;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region RenderFrame
 | 
						|
 | 
						|
        internal void RenderFrame(PaintEventArgs e)
 | 
						|
        {
 | 
						|
            int inside = _GaugeFrame.AbsBevelInside;
 | 
						|
            int outside = _GaugeFrame.AbsBevelOutside;
 | 
						|
 | 
						|
            Rectangle r = _GaugeFrame.Bounds;
 | 
						|
            r.Inflate(-outside, -outside);
 | 
						|
 | 
						|
            if (r.Width > 0 && r.Height > 0)
 | 
						|
            {
 | 
						|
                switch (_GaugeFrame.FrameColor.GradientFillType)
 | 
						|
                {
 | 
						|
                    case GradientFillType.Auto:
 | 
						|
                    case GradientFillType.Angle:
 | 
						|
                    case GradientFillType.StartToEnd:
 | 
						|
                        RenderFrameByAngle(e, r);
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case GradientFillType.Center:
 | 
						|
                        RenderFrameByCenter(e, r);
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case GradientFillType.HorizontalCenter:
 | 
						|
                        RenderFrameByHorizontalCenter(e, r);
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case GradientFillType.VerticalCenter:
 | 
						|
                        RenderFrameByVerticalCenter(e, r);
 | 
						|
                        break;
 | 
						|
 | 
						|
                    default:
 | 
						|
                        RenderFrameByNone(e, r);
 | 
						|
                        break;
 | 
						|
                }
 | 
						|
 | 
						|
                r.Inflate(-inside, -inside);
 | 
						|
 | 
						|
                if (r.Width > 0 && r.Height > 0)
 | 
						|
                {
 | 
						|
                    switch (_GaugeFrame.BackColor.GradientFillType)
 | 
						|
                    {
 | 
						|
                        case GradientFillType.Auto:
 | 
						|
                        case GradientFillType.Angle:
 | 
						|
                        case GradientFillType.StartToEnd:
 | 
						|
                            RenderBackByAngle(e, r);
 | 
						|
                            break;
 | 
						|
 | 
						|
                        case GradientFillType.Center:
 | 
						|
                            RenderBackByCenter(e, r);
 | 
						|
                            break;
 | 
						|
 | 
						|
                        case GradientFillType.HorizontalCenter:
 | 
						|
                            RenderBackByHorizontalCenter(e, r);
 | 
						|
                            break;
 | 
						|
 | 
						|
                        case GradientFillType.VerticalCenter:
 | 
						|
                            RenderBackByVerticalCenter(e, r);
 | 
						|
                            break;
 | 
						|
 | 
						|
                        default:
 | 
						|
                            RenderBackByNone(e, r);
 | 
						|
                            break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |