Exemple #1
0
        private void AdjustColor(SelectableColorArgItem item, ref byte pixelBlue, ref byte pixelGreen, ref byte pixelRed)
        {
            byte lim = GetLIM(item, ref pixelBlue, ref pixelGreen, ref pixelRed);
            byte inc = 0, dec = 0;

            if (item.CyanAdjustValue != 0)
            {
                GetDLT(lim, pixelRed, ref inc, ref dec);
                ApplyDLT(lim, ref pixelRed, item.CyanAdjustValue, inc, dec);
            }

            if (item.MagentaAdjustValue != 0)
            {
                GetDLT(lim, pixelGreen, ref inc, ref dec);
                ApplyDLT(lim, ref pixelGreen, item.MagentaAdjustValue, inc, dec);
            }

            if (item.YellowAdjustValue != 0)
            {
                GetDLT(lim, pixelBlue, ref inc, ref dec);
                ApplyDLT(lim, ref pixelBlue, item.YellowAdjustValue, inc, dec);
            }

            if (item.BlackAdjustValue != 0)
            {
                GetDLT(lim, pixelRed, ref inc, ref dec);
                ApplyDLT(lim, ref pixelRed, item.BlackAdjustValue, inc, dec);
                GetDLT(lim, pixelGreen, ref inc, ref dec);
                ApplyDLT(lim, ref pixelGreen, item.BlackAdjustValue, inc, dec);
                GetDLT(lim, pixelBlue, ref inc, ref dec);
                ApplyDLT(lim, ref pixelBlue, item.BlackAdjustValue, inc, dec);
            }
        }
        public SelectableColorArgItem Clone()
        {
            SelectableColorArgItem it = new SelectableColorArgItem(_targetColor);

            it.BlackAdjustValue   = _blackAdjustValue;
            it.CyanAdjustValue    = _cyanAdjustValue;
            it.MagentaAdjustValue = _magentaAdjustValue;
            it.YellowAdjustValue  = _yellowAdjustValue;
            return(it);
        }
Exemple #3
0
 private void comboTargetColor_SelectedIndexChanged(object sender, EventArgs e)
 {
     _currentArgItem    = _actualArg.GetSelectableColorArgItem((cbxTargetColor.SelectedItem as SelectableColorTargetColorItem).Color);
     trackCyan.Value    = _currentArgItem.CyanAdjustValue;
     trackMagenta.Value = _currentArgItem.MagentaAdjustValue;
     trackYellow.Value  = _currentArgItem.YellowAdjustValue;
     trackBlack.Value   = _currentArgItem.BlackAdjustValue;
     txtCyan.Value      = trackCyan.Value;
     txtMagenta.Value   = trackMagenta.Value;
     txtYellow.Value    = trackYellow.Value;
     txtBlack.Value     = trackBlack.Value;
 }
Exemple #4
0
        /// <summary>
        /// 计算总调整量
        /// </summary>
        /// <param name="item"></param>
        /// <param name="pixelBlue"></param>
        /// <param name="pixelGreen"></param>
        /// <param name="pixelRed"></param>
        /// <returns></returns>
        private static byte GetLIM(SelectableColorArgItem item, ref byte pixelBlue, ref byte pixelGreen, ref byte pixelRed)
        {
            //byte min = Math.Min(pixelBlue, Math.Min(pixelGreen, pixelRed));
            //byte max = Math.Max(pixelBlue, Math.Max(pixelGreen, pixelRed));
            //byte mid = 0;
            //bool mided = false;
            //if (pixelBlue != min && pixelBlue != max)
            //{
            //    mid = pixelBlue;
            //    mided = true;
            //}
            //else if (pixelGreen != min && pixelGreen != max)
            //{
            //    mid = pixelGreen;
            //    mided = true;
            //}
            //else if (pixelRed != min && pixelRed != max)
            //{
            //    mid = pixelRed;
            //    mided = true;
            //}
            //if (!mided)
            //    mid = min;
            byte min, max, mid, tmp;

            max = pixelRed;
            min = pixelGreen;
            mid = pixelBlue;
            if (max < mid)
            {
                tmp = max;
                max = mid;
                mid = tmp;
            }
            if (max < min)
            {
                tmp = max;
                max = min;
                min = tmp;
            }
            if (min > mid)
            {
                tmp = min;
                min = mid;
                mid = tmp;
            }
            switch (item.TargetColor)
            {
            case enumSelectableColor.Red:
            case enumSelectableColor.Green:
            case enumSelectableColor.Blue:
                return(ColorMath.FixByte(max - mid));

            case enumSelectableColor.Yellow:
            case enumSelectableColor.Cyan:
            case enumSelectableColor.Magenta:
                return(ColorMath.FixByte(mid - min));

            case enumSelectableColor.Neutrals:
                return(ColorMath.FixByte(255 - (Math.Abs(max - 127.5) + Math.Abs(min - 127.5))));

            case enumSelectableColor.White:
                return(ColorMath.FixByte((min - 127.5) * 2));

            case enumSelectableColor.Black:
                return(ColorMath.FixByte((127.5 - max) * 2));
            }
            return(0);
        }