Exemplo n.º 1
0
        private void CalcCoordsAndUpdate(ColorManagerWheel.HSV HSV)
        {
            // Convert color to real-world coordinates and then calculate
            // the various points. HSV.Hue represents the degrees (0 to 360),
            // HSV.Saturation represents the radius.
            // This procedure doesn't draw anything--it simply
            // updates class-level variables. The UpdateDisplay
            // procedure uses these values to update the screen.

            // Given the angle (HSV.Hue), and distance from
            // the center (HSV.Saturation), and the center,
            // calculate the point corresponding to
            // the selected color, on the color wheel.
            colorPoint = GetPoint((double)HSV.Hue / 255 * 360,
                                  (double)HSV.Saturation / 255 * radius,
                                  centerPoint);

            // Given the brightness (HSV.value), calculate the
            // point corresponding to the brightness indicator.
            brightnessPoint = CalcBrightnessPoint(HSV.value);

            // Store information about the selected color.
            brightness    = HSV.value;
            selectedColor = ColorManagerWheel.HSVtoColor(HSV);
            RGB           = ColorManagerWheel.HSVtoRGB(HSV);

            // The full color is the same as HSV, except that the
            // brightness is set to full (255). This is the top-most
            // color in the brightness gradient.
            fullColor = ColorManagerWheel.HSVtoColor(HSV.Hue, HSV.Saturation, 255);
            //fullColor = ColorManager.SetBrightness(selectedColor, 0.999);
        }
Exemplo n.º 2
0
 public void Draw(Graphics g, ColorManagerWheel.RGB RGB)
 {
     // Given RGB values, calculate HSV and then update the screen.
     this.g   = g;
     this.HSV = ColorManagerWheel.RGBtoHSV(RGB);
     CalcCoordsAndUpdate(this.HSV);
     UpdateDisplay();
 }
 private void SetRGB(ColorManagerWheel.RGB RGB)
 {
     // Update the RGB values on the form, but don't trigger
     // the ValueChanged event of the form. The isInUpdate
     // variable ensures that the event procedures
     // exit without doing anything.
     isInUpdate = true;
     RefreshValue(nudRed, RGB.Red);
     RefreshValue(nudBlue, RGB.Blue);
     RefreshValue(nudGreen, RGB.Green);
     isInUpdate = false;
 }
        private void HandleRGBChange(object sender, System.EventArgs e)
        {
            // If the R, G, or B values change, use this
            // code to update the HSV values and invalidate
            // the color wheel (so it updates the pointers).
            // Check the isInUpdate flag to avoid recursive events
            // when you update the NumericUpdownControls.
            if (!isInUpdate)
            {
                changeType = ChangeStyle.RGB;
                RGB        = new ColorManagerWheel.RGB((int)nudRed.Value, (int)nudGreen.Value, (int)nudBlue.Value);
                SetHSV(ColorManagerWheel.RGBtoHSV(RGB));
                this.Invalidate();

                ColorUIEditorPaletteCtrl.ColorPickEventArgs rgs = new ColorUIEditorPaletteCtrl.ColorPickEventArgs();
                rgs.Color = Color.FromArgb(RGB.Red, RGB.Green, RGB.Blue);

                if (ColorChanged != null)
                {
                    ColorChanged(Color.FromArgb(RGB.Red, RGB.Green, RGB.Blue), rgs);
                }
            }
        }
        private void HandleHSVChange(object sender, EventArgs e)
        {
            // If the H, S, or V values change, use this
            // code to update the RGB values and invalidate
            // the color wheel (so it updates the pointers).
            // Check the isInUpdate flag to avoid recursive events
            // when you update the NumericUpdownControls.
            if (!isInUpdate)
            {
                changeType = ChangeStyle.HSV;
                HSV        = new ColorManagerWheel.HSV((int)(nudHue.Value), (int)(nudSaturation.Value), (int)(nudBrightness.Value));
                ColorManagerWheel.RGB rgb = ColorManagerWheel.HSVtoRGB(HSV);
                SetRGB(rgb);
                this.Invalidate();

                ColorUIEditorPaletteCtrl.ColorPickEventArgs rgs = new ColorUIEditorPaletteCtrl.ColorPickEventArgs();
                rgs.Color = Color.FromArgb(rgb.Red, rgb.Green, rgb.Blue);

                if (ColorChanged != null)
                {
                    ColorChanged(Color.FromArgb(rgb.Red, rgb.Green, rgb.Blue), rgs);
                }
            }
        }
Exemplo n.º 6
0
        public void Draw(Graphics g, Point mousePoint)
        {
            // You've moved the mouse.
            // Now update the screen to match.

            double distance;
            int    degrees;
            Point  delta;
            Point  newColorPoint;
            Point  newBrightnessPoint;
            Point  newPoint;

            // Keep track of the previous color pointer point,
            // so you can put the mouse there in case the
            // user has clicked outside the circle.
            newColorPoint      = colorPoint;
            newBrightnessPoint = brightnessPoint;

            // Store this away for later use.
            this.g = g;

            if (currentState == MouseState.MouseUp)
            {
                if (!mousePoint.IsEmpty)
                {
                    if (colorRegion.IsVisible(mousePoint))
                    {
                        // Is the mouse point within the color circle?
                        // If so, you just clicked on the color wheel.
                        currentState = MouseState.ClickOnColor;
                    }
                    else if (brightnessRegion.IsVisible(mousePoint))
                    {
                        // Is the mouse point within the brightness area?
                        // You clicked on the brightness area.
                        currentState = MouseState.ClickOnBrightness;
                    }
                    else
                    {
                        // Clicked outside the color and the brightness
                        // regions. In that case, just put the
                        // pointers back where they were.
                        currentState = MouseState.ClickOutsideRegion;
                    }
                }
            }

            switch (currentState)
            {
            case MouseState.ClickOnBrightness:
            case MouseState.DragInBrightness:
                // Calculate new color information
                // based on the brightness, which may have changed.
                newPoint = mousePoint;
                if (newPoint.Y < brightnessMin)
                {
                    newPoint.Y = brightnessMin;
                }
                else if (newPoint.Y > brightnessMax)
                {
                    newPoint.Y = brightnessMax;
                }
                newBrightnessPoint = new Point(brightnessX, newPoint.Y);
                brightness         = (int)((brightnessMax - newPoint.Y) * brightnessScaling);
                HSV.value          = brightness;
                RGB = ColorManagerWheel.HSVtoRGB(HSV);
                break;

            case MouseState.ClickOnColor:
            case MouseState.DragInColor:
                // Calculate new color information
                // based on selected color, which may have changed.
                newColorPoint = mousePoint;

                // Calculate x and y distance from the center,
                // and then calculate the angle corresponding to the
                // new location.
                delta = new Point(
                    mousePoint.X - centerPoint.X, mousePoint.Y - centerPoint.Y);
                degrees = CalcDegrees(delta);

                // Calculate distance from the center to the new point
                // as a fraction of the radius. Use your old friend,
                // the Pythagorean theorem, to calculate this value.
                distance = Math.Sqrt(delta.X * delta.X + delta.Y * delta.Y) / radius;

                if (currentState == MouseState.DragInColor)
                {
                    if (distance > 1)
                    {
                        // Mouse is down, and outside the circle, but you
                        // were previously dragging in the color circle.
                        // What to do?
                        // In that case, move the point to the edge of the
                        // circle at the correct angle.
                        distance      = 1;
                        newColorPoint = GetPoint(degrees, radius, centerPoint);
                    }
                }

                // Calculate the new HSV and RGB values.
                HSV.Hue        = (int)(degrees * 255 / 360);
                HSV.Saturation = (int)(distance * 255);
                HSV.value      = brightness;

                RGB = ColorManagerWheel.HSVtoRGB(HSV);

                fullColor = ColorManagerWheel.HSVtoColor(HSV.Hue, HSV.Saturation, 255);
                //fullColor = ColorManager.SetBrightness(ColorHandler.HSVtoColor(HSV.Hue, HSV.Saturation, brightness), 0.999);

                break;
            }

            selectedColor = ColorManagerWheel.HSVtoColor(HSV);

            // Raise an event back to the parent form,
            // so the form can update any UI it's using
            // to display selected color values.
            OnColorChanged(RGB, HSV);

            // On the way out, set the new state.
            switch (currentState)
            {
            case MouseState.ClickOnBrightness:
                currentState = MouseState.DragInBrightness;
                break;

            case MouseState.ClickOnColor:
                currentState = MouseState.DragInColor;
                break;

            case MouseState.ClickOutsideRegion:
                currentState = MouseState.DragOutsideRegion;
                break;
            }

            // Store away the current points for next time.
            colorPoint      = newColorPoint;
            brightnessPoint = newBrightnessPoint;

            // Draw the gradients and points.
            UpdateDisplay();
        }
Exemplo n.º 7
0
        protected void OnColorChanged(ColorManagerWheel.RGB RGB, ColorManagerWheel.HSV HSV)
        {
            ColorChangedEventArgs e = new ColorChangedEventArgs(RGB, HSV);

            ColorChanged(this, e);
        }
Exemplo n.º 8
0
		private void HandleRGBChange(object sender, System.EventArgs e)
		{
			// If the R, G, or B values change, use this 
			// code to update the HSV values and invalidate
			// the color wheel (so it updates the pointers).
			// Check the isInUpdate flag to avoid recursive events
			// when you update the NumericUpdownControls.
			if (!isInUpdate)
			{
				changeType = ChangeStyle.RGB;
				RGB = new ColorManagerWheel.RGB((int) nudRed.Value, (int) nudGreen.Value, (int) nudBlue.Value);
				SetHSV(ColorManagerWheel.RGBtoHSV(RGB));
				this.Invalidate();

				ColorUIEditorPaletteCtrl.ColorPickEventArgs rgs = new ColorUIEditorPaletteCtrl.ColorPickEventArgs();
				rgs.Color = Color.FromArgb(RGB.Red, RGB.Green, RGB.Blue);

				if (ColorChanged != null)
					ColorChanged(Color.FromArgb(RGB.Red, RGB.Green, RGB.Blue), rgs);
			}
		}
Exemplo n.º 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="RGB"></param>
 /// <param name="HSV"></param>
 public ColorChangedEventArgs(ColorManagerWheel.RGB RGB, ColorManagerWheel.HSV HSV)
 {
     mRGB = RGB;
     mHSV = HSV;
 }
Exemplo n.º 10
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="RGB"></param>
		/// <param name="HSV"></param>
		public ColorChangedEventArgs ( ColorManagerWheel.RGB RGB,  ColorManagerWheel.HSV HSV) 
		{
			mRGB = RGB;
			mHSV = HSV;
		}
Exemplo n.º 11
0
		private void CalcCoordsAndUpdate(ColorManagerWheel.HSV HSV)
		{
			// Convert color to real-world coordinates and then calculate
			// the various points. HSV.Hue represents the degrees (0 to 360), 
			// HSV.Saturation represents the radius. 
			// This procedure doesn't draw anything--it simply 
			// updates class-level variables. The UpdateDisplay
			// procedure uses these values to update the screen.

			// Given the angle (HSV.Hue), and distance from 
			// the center (HSV.Saturation), and the center, 
			// calculate the point corresponding to 
			// the selected color, on the color wheel.
			colorPoint = GetPoint((double) HSV.Hue / 255 * 360,
			                      (double) HSV.Saturation / 255 * radius,
			                      centerPoint);

			// Given the brightness (HSV.value), calculate the 
			// point corresponding to the brightness indicator.
			brightnessPoint = CalcBrightnessPoint(HSV.value);

			// Store information about the selected color.
			brightness = HSV.value;
			selectedColor = ColorManagerWheel.HSVtoColor(HSV);
			RGB = ColorManagerWheel.HSVtoRGB(HSV);

			// The full color is the same as HSV, except that the 
			// brightness is set to full (255). This is the top-most
			// color in the brightness gradient.
			fullColor = ColorManagerWheel.HSVtoColor(HSV.Hue, HSV.Saturation, 255);
			//fullColor = ColorManager.SetBrightness(selectedColor, 0.999);
		}
Exemplo n.º 12
0
		public void Draw(Graphics g, Point mousePoint)
		{
			// You've moved the mouse. 
			// Now update the screen to match.

			double distance;
			int degrees;
			Point delta;
			Point newColorPoint;
			Point newBrightnessPoint;
			Point newPoint;

			// Keep track of the previous color pointer point, 
			// so you can put the mouse there in case the 
			// user has clicked outside the circle.
			newColorPoint = colorPoint;
			newBrightnessPoint = brightnessPoint;

			// Store this away for later use.
			this.g = g;

			if (currentState == MouseState.MouseUp)
			{
				if (! mousePoint.IsEmpty)
				{
					if (colorRegion.IsVisible(mousePoint))
					{
						// Is the mouse point within the color circle?
						// If so, you just clicked on the color wheel.
						currentState = MouseState.ClickOnColor;
					}
					else if (brightnessRegion.IsVisible(mousePoint))
					{
						// Is the mouse point within the brightness area?
						// You clicked on the brightness area.
						currentState = MouseState.ClickOnBrightness;
					}
					else
					{
						// Clicked outside the color and the brightness
						// regions. In that case, just put the 
						// pointers back where they were.
						currentState = MouseState.ClickOutsideRegion;
					}
				}
			}

			switch (currentState)
			{
				case MouseState.ClickOnBrightness:
				case MouseState.DragInBrightness:
					// Calculate new color information
					// based on the brightness, which may have changed.
					newPoint = mousePoint;
					if (newPoint.Y < brightnessMin)
					{
						newPoint.Y = brightnessMin;
					}
					else if (newPoint.Y > brightnessMax)
					{
						newPoint.Y = brightnessMax;
					}
					newBrightnessPoint = new Point(brightnessX, newPoint.Y);
					brightness = (int) ((brightnessMax - newPoint.Y) * brightnessScaling);
					HSV.value = brightness;
					RGB = ColorManagerWheel.HSVtoRGB(HSV);
					break;

				case MouseState.ClickOnColor:
				case MouseState.DragInColor:
					// Calculate new color information
					// based on selected color, which may have changed.
					newColorPoint = mousePoint;

					// Calculate x and y distance from the center,
					// and then calculate the angle corresponding to the
					// new location.
					delta = new Point(
						mousePoint.X - centerPoint.X, mousePoint.Y - centerPoint.Y);
					degrees = CalcDegrees(delta);

					// Calculate distance from the center to the new point 
					// as a fraction of the radius. Use your old friend, 
					// the Pythagorean theorem, to calculate this value.
					distance = Math.Sqrt(delta.X * delta.X + delta.Y * delta.Y) / radius;

					if (currentState == MouseState.DragInColor)
					{
						if (distance > 1)
						{
							// Mouse is down, and outside the circle, but you 
							// were previously dragging in the color circle. 
							// What to do?
							// In that case, move the point to the edge of the 
							// circle at the correct angle.
							distance = 1;
							newColorPoint = GetPoint(degrees, radius, centerPoint);
						}
					}

					// Calculate the new HSV and RGB values.
					HSV.Hue = (int) (degrees * 255 / 360);
					HSV.Saturation = (int) (distance * 255);
					HSV.value = brightness;

					RGB = ColorManagerWheel.HSVtoRGB(HSV);

					fullColor = ColorManagerWheel.HSVtoColor(HSV.Hue, HSV.Saturation, 255);
					//fullColor = ColorManager.SetBrightness(ColorHandler.HSVtoColor(HSV.Hue, HSV.Saturation, brightness), 0.999);
					
					break;
			}

			selectedColor = ColorManagerWheel.HSVtoColor(HSV);

			// Raise an event back to the parent form,
			// so the form can update any UI it's using 
			// to display selected color values.
			OnColorChanged(RGB, HSV);

			// On the way out, set the new state.
			switch (currentState)
			{
				case MouseState.ClickOnBrightness:
					currentState = MouseState.DragInBrightness;
					break;
				case MouseState.ClickOnColor:
					currentState = MouseState.DragInColor;
					break;
				case MouseState.ClickOutsideRegion:
					currentState = MouseState.DragOutsideRegion;
					break;
			}

			// Store away the current points for next time.
			colorPoint = newColorPoint;
			brightnessPoint = newBrightnessPoint;

			// Draw the gradients and points. 
			UpdateDisplay();
		}