private void Eh1DColorControl_ValueChanged(double relValue)
        {
            var baseColor = _colorModel.GetColorFor1DColorSurfaceFromRelativePosition(relValue);
            var imgSource = ColorBitmapCreator.GetBitmap(relPos => _colorModel.GetColorFor2DColorSurfaceFromRelativePosition(relPos, baseColor));

            _gui2DColorControl.Set2DColorImage(imgSource);

            var newColor = _colorModel.GetColorFor2DColorSurfaceFromRelativePosition(_gui2DColorControl.SelectionRectangleRelativePosition, baseColor);

            AmendAlphaComponent(ref newColor);

            ChangeCurrentColor(newColor, false, false, true, true);
        }
        private void UpdateAllAccordingToCurrentModelAndCurrentColor()
        {
            var(pos1D, pos2D) = _colorModel.GetRelativePositionsFor1Dand2DColorSurfaceFromColor(_currentColor);

            // update color surfaces
            UpdateColorSurfacePositions(pos1D, pos2D);
            var baseColor   = _colorModel.GetColorFor1DColorSurfaceFromRelativePosition(pos1D);
            var imgSource1D = ColorBitmapCreator.GetBitmap(p => _colorModel.GetColorFor1DColorSurfaceFromRelativePosition(p.Y));

            _gui1DColorControl.Set1DColorImage(imgSource1D);
            var imgSource2D = ColorBitmapCreator.GetBitmap(relPos => _colorModel.GetColorFor2DColorSurfaceFromRelativePosition(relPos, baseColor));

            _gui2DColorControl.Set2DColorImage(imgSource2D);

            // now update components
            var components = _colorModel.GetComponentsForColor(_currentColor);

            UpdateComponentValues(() =>
            {
                for (int i = 0; i < components.Length; ++i)
                {
                    if (_colorModel.IsUsingByteComponents)
                    {
                        _guiComponents[i].Maximum       = 255;
                        _guiComponents[i].Change        = 1;
                        _guiComponents[i].DecimalPlaces = 0;
                    }
                    else
                    {
                        _guiComponents[i].Maximum       = 1;
                        _guiComponents[i].Change        = 0.01M;
                        _guiComponents[i].DecimalPlaces = 3;
                    }
                    _guiComponents[i].Value = (decimal)components[i];
                }

                if (_colorModel.IsUsingByteComponents)
                {
                    _guiAlphaValue.Maximum       = 255;
                    _guiAlphaValue.Change        = 1;
                    _guiAlphaValue.DecimalPlaces = 0;
                    _guiAlphaValue.Value         = _currentColor.A;
                }
                else
                {
                    _guiAlphaValue.Maximum       = 1;
                    _guiAlphaValue.Change        = 0.01M;
                    _guiAlphaValue.DecimalPlaces = 3;
                    _guiAlphaValue.Value         = (decimal)_currentColor.ScA;
                }
            }
                                  );
            // update labels
            _guiLabelComponentsType.Content = Current.Gui.GetUserFriendlyClassName(_colorModel.GetType());
            var labels = _colorModel.GetNamesOfComponents();

            for (int i = 0; i < labels.Length; ++i)
            {
                _guiLabelForComponents[i].Content = labels[i];
            }

            // update visibility
            for (int i = 0; i < 4; ++i)
            {
                _guiLabelForComponents[i].Visibility = _guiComponents[i].Visibility = i < components.Length ? Visibility.Visible : Visibility.Hidden;
            }

            // update alternative components
            var altComponents = _altColorModel.GetComponentsForColor(_currentColor, Altaxo.Settings.GuiCulture.Instance);

            for (int i = 0; i < altComponents.Length; ++i)
            {
                _guiAltComponents[i].Text = altComponents[i];
            }
        }