protected virtual void SetColour(Point point)
        {
            double    dx;
            double    dy;
            double    angle;
            double    distance;
            double    saturation;
            Padding   padding;
            HSLColour newColour;

            padding    = this.Padding;
            dx         = Math.Abs(point.X - _centerPoint.X - padding.Left);
            dy         = Math.Abs(point.Y - _centerPoint.Y - padding.Top);
            angle      = Math.Atan(dy / dx) / Math.PI * 180;
            distance   = Math.Pow(Math.Pow(dx, 2) + Math.Pow(dy, 2), 0.5);
            saturation = distance / _radius;

            if (point.X < _centerPoint.X)
            {
                angle = 180 - angle;
            }

            if (point.Y > _centerPoint.Y)
            {
                angle = 360 - angle;
            }

            newColour = new HSLColour(angle, saturation, 0.5);

            if (_hslColour != newColour)
            {
                _lockUpdates   = true;
                this.HSLColour = newColour;
                this.Colour    = _hslColour.ToRgbColour();
                _lockUpdates   = false;
            }
        }
 protected void PaintColour(PaintEventArgs e, HSLColour colour)
 {
     this.PaintColour(e, colour, false);
 }