示例#1
0
 protected override void OnColorChanged()
 {
     double lightness = HslColor.Lightness;
     base.OnColorChanged();
     PointLightness = HslColor.Lightness;
     PointBrush.Color = PointColor.MediaColor();
     if (HslColor.Lightness < 0.2)
         lightness = 0.2;
     HslColor hsl = new HslColor(HslColor.Hue, HslColor.Saturation, lightness);
     PureBrush.Color = hsl.ToRGB().MediaColor();
 }
示例#2
0
        private void MakeGradient()
        {
            Media.Color color, color1;
            Media.LinearGradientBrush lgb = new Media.LinearGradientBrush();
            lgb.StartPoint = new System.Windows.Point(0.5, 1.0);
            lgb.EndPoint = new System.Windows.Point(0.5, 0.0);

            if (ColorScale == ColorPart.H)
            {
                color = new HslColor(ScaleRange.X, 1.0, 0.5).ToRGB().MediaColor();
                color1 = new HslColor(ScaleRange.Y, 1.0, 0.5).ToRGB().MediaColor();

                lgb.GradientStops.Add(new Media.GradientStop(color, 0.0));
                lgb.GradientStops.Add(new Media.GradientStop(color1, 1.0));

                if (scale != null)
                    scale.Background = lgb;
            }

            if (ColorScale == ColorPart.S)
            {
                color = new HslColor(HueValue, 0.0, 0.5).ToRGB().MediaColor();
                color1 = new HslColor(HueValue, 1.0, 0.5).ToRGB().MediaColor();

                lgb.GradientStops.Add(new Media.GradientStop(color, 0.0));
                lgb.GradientStops.Add(new Media.GradientStop(color1, 1.0));

                if (scale != null)
                    scale.Background = lgb;
            }

            if (ColorScale == ColorPart.L)
            {
                lgb.GradientStops.Add(new Media.GradientStop(Media.Colors.Black, 0.0));
                lgb.GradientStops.Add(new Media.GradientStop(Media.Colors.LightGray, 1.0));

                if (scale != null)
                    scale.Background = lgb;
            }
        }
示例#3
0
        private List<PatternPoint> GetLightnessCurve(PatternPoint from, PatternPoint to)
        {
            List<PatternPoint> lightnessCurve = null;
            int fromIx = Pattern.IndexOf(from);
            int toIx = Pattern.IndexOf(to);
            int stepCount = 0;
            int baseLedPos;
            HslColor hsl;

            double deltaHue = 0.0;
            double deltaSat = 0.0;

            if ((toIx - fromIx) != 0)       // имеются яркостные точки
            {
                lightnessCurve = new List<PatternPoint>();
                for (int i = fromIx + 1; i < toIx; i++)
                    lightnessCurve.Add(Pattern[i]);


                if (from.Variant == PointVariant.Range)
                    baseLedPos = (from.LedPos + from.LedCount - 1);
                else
                    baseLedPos = from.LedPos;

                stepCount = to.LedPos - baseLedPos;

                deltaHue = (to.HslColor.Hue - from.HslColor.Hue) / stepCount;
                deltaSat = (to.HslColor.Saturation - from.HslColor.Saturation) / stepCount;

                blockOnPointColorChanged = true;
                foreach (PatternPoint pp in lightnessCurve)
                {
                    hsl = new HslColor(from.HslColor.Hue + (pp.LedPos - baseLedPos) * deltaHue,
                                       from.HslColor.Saturation + (pp.LedPos - baseLedPos) * deltaSat,
                                       pp.HslColor.Lightness);
                    pp.HslColor = hsl;
                }
                blockOnPointColorChanged = false;
            }
            return lightnessCurve;
        }
示例#4
0
        private void MakeGradient(PatternPoint from, PatternPoint to)
        {
            HslColor hsl;
            int stepCount = 0;
            PatternPoint tmpFrom = null;

            if (to.Variant == PointVariant.Range)
                for (int i = 0; i < to.LedCount; i++)
                    StripModel[to.LedPos + i - 1].PointColor = to.PointColor;

            if (from.Variant == PointVariant.Range)
            {
                for (int i = 0; i < from.LedCount; i++)
                    StripModel[from.LedPos + i - 1].PointColor = from.PointColor;
                tmpFrom = new PatternPoint(from.PointColor, from.LedPos + from.LedCount - 1);
            }
            else
                tmpFrom = from;

            stepCount = to.LedPos - tmpFrom.LedPos;
            double deltaHue = (to.HslColor.Hue - tmpFrom.HslColor.Hue) / stepCount;
            double deltaSat = (to.HslColor.Saturation - tmpFrom.HslColor.Saturation) / stepCount;
            double deltaBri = (to.HslColor.Lightness - tmpFrom.HslColor.Lightness) / stepCount;

            StripModel[tmpFrom.LedPos - 1].PointColor = tmpFrom.PointColor;
            //Console.WriteLine("Pos: {0}  Hue: {1},  Lightness: {2}", from.LedPos, from.HslColor.Hue, from.HslColor.Lightness);
            StripModel[to.LedPos - 1].PointColor = to.PointColor;

            for (int i = 1; i < stepCount; i++)
            {
                hsl = new HslColor(from.HslColor.Hue + i * deltaHue,
                                   from.HslColor.Saturation + i * deltaSat,
                                   from.HslColor.Lightness + i * deltaBri);
                StripModel[tmpFrom.LedPos + i - 1].PointColor = hsl.ToRGB();
                //Console.WriteLine("Pos: {0}  Hue: {1},  Lightness: {2}", from.LedPos + i, hsl.Hue, hsl.Lightness);
            }
            //Console.WriteLine("Pos: {0}  Hue: {1},  Lightness: {2}", to.LedPos, to.HslColor.Hue, to.HslColor.Lightness);
        }