protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            base.OnMouseUp(e);

            var pt = e.GetPosition(this);

            ReleaseMouseCapture();
            switch (m_selected_part)
            {
            case EParts.Wheel: SelectHueAndSaturation(pt); break;

            case EParts.VSlider: SelectBrightness(pt); break;

            case EParts.ASlider: SelectAlpha(pt); break;
            }

            ColourSelection?.Invoke(this, e);
            m_selected_part = EParts.None;
        }
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);

            var pt = e.GetPosition(this);

            m_selected_part = PartHitTest(pt.X, pt.Y);
            if (m_selected_part == EParts.None)
            {
                return;
            }

            ColourSelection?.Invoke(this, e);
            switch (m_selected_part)
            {
            case EParts.Wheel: SelectHueAndSaturation(pt); break;

            case EParts.VSlider: SelectBrightness(pt); break;

            case EParts.ASlider: SelectAlpha(pt); break;
            }

            CaptureMouse();
        }