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); }
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; }
/// <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); }