| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | using System.Drawing;using System.Windows.Forms;namespace Optimizer{    public abstract class ToggleSwitchRendererBase    {        private ToggleSwitch _toggleSwitch;        protected ToggleSwitchRendererBase() { }        internal void SetToggleSwitch(ToggleSwitch toggleSwitch)        {            _toggleSwitch = toggleSwitch;        }        internal ToggleSwitch ToggleSwitch        {            get { return _toggleSwitch; }        }        public void RenderBackground(PaintEventArgs e)        {            if (_toggleSwitch == null) return;            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;            Rectangle controlRectangle = new Rectangle(0, 0, _toggleSwitch.Width, _toggleSwitch.Height);            FillBackground(e.Graphics, controlRectangle);            RenderBorder(e.Graphics, controlRectangle);        }        public void RenderControl(PaintEventArgs e)        {            if (_toggleSwitch == null) return;            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;            Rectangle buttonRectangle = GetButtonRectangle();            int totalToggleFieldWidth = ToggleSwitch.Width - buttonRectangle.Width;            if (buttonRectangle.X > 0)            {                Rectangle leftRectangle = new Rectangle(0, 0, buttonRectangle.X, ToggleSwitch.Height);                if (leftRectangle.Width > 0)                    RenderLeftToggleField(e.Graphics, leftRectangle, totalToggleFieldWidth);            }            if (buttonRectangle.X + buttonRectangle.Width < e.ClipRectangle.Width)            {                Rectangle rightRectangle = new Rectangle(buttonRectangle.X + buttonRectangle.Width, 0, ToggleSwitch.Width - buttonRectangle.X - buttonRectangle.Width, ToggleSwitch.Height);                if (rightRectangle.Width > 0)                    RenderRightToggleField(e.Graphics, rightRectangle, totalToggleFieldWidth);            }            RenderButton(e.Graphics, buttonRectangle);        }        public void FillBackground(Graphics g, Rectangle controlRectangle)        {            Color backColor = (!ToggleSwitch.Enabled && ToggleSwitch.GrayWhenDisabled) ? ToggleSwitch.BackColor.ToGrayScale() : ToggleSwitch.BackColor;            using (Brush backBrush = new SolidBrush(backColor))            {                g.FillRectangle(backBrush, controlRectangle);            }        }        public abstract void RenderBorder(Graphics g, Rectangle borderRectangle);        public abstract void RenderLeftToggleField(Graphics g, Rectangle leftRectangle, int totalToggleFieldWidth);        public abstract void RenderRightToggleField(Graphics g, Rectangle rightRectangle, int totalToggleFieldWidth);        public abstract void RenderButton(Graphics g, Rectangle buttonRectangle);        public abstract int GetButtonWidth();        public abstract Rectangle GetButtonRectangle();        public abstract Rectangle GetButtonRectangle(int buttonWidth);    }}
 |