private void ApplyFilter() { ColourSwapType swapType = (ColourSwapType)cmbFilterType.SelectedItem; cmbFilterType.Enabled = chkSwapColours.Checked; lblFixedValue.Text = "Fixed Value: " + trcFixedValue.Value.ToString(); Bitmap bitmapResult = null; if (picSource.Image == null) { return; } if (chkFlipPixels.Checked == true && chkSwapColours.Checked == true) { bitmapResult = ((Bitmap)picSource.Image).FlipPixels(); bitmapResult = bitmapResult.SwapColors(swapType, (byte)trcFixedValue.Value); } else if (chkSwapColours.Checked == true) { bitmapResult = ((Bitmap)picSource.Image).SwapColors(swapType, (byte)trcFixedValue.Value); } if (bitmapResult != null) { picResult.Image = bitmapResult; } }
private void ApplyFilter(bool preview) { cmbInvertColoursType.Enabled = chkInvertColours.Checked; cmbFilterType.Enabled = chkSwapColours.Checked; lblFixedValue.Text = "Fixed Value: " + trcFixedValue.Value.ToString(); Bitmap bitmapResult = null; if (picSource.Image == null) { return; } if (preview == true) { bitmapResult = new Bitmap(picSource.Image); } else { bitmapResult = new Bitmap(sourceBitmap); } if (bitmapResult == null) { return; } if (chkFlipPixels.Checked == true) { bitmapResult = bitmapResult.FlipPixels(); } if (chkInvertColours.Checked == true) { ColourInversionType inversionType = (ColourInversionType)cmbInvertColoursType.SelectedItem; bitmapResult = bitmapResult.InvertColors(inversionType); } if (chkSwapColours.Checked == true) { ColourSwapType swapType = (ColourSwapType)cmbFilterType.SelectedItem; bitmapResult = bitmapResult.SwapColors(swapType, (byte)trcFixedValue.Value); } if (bitmapResult != null) { if (preview == true) { picResult.Image = bitmapResult; } else { resultBitmap = bitmapResult; } } }
/// <summary> /// Swap Colors /// </summary> /// <param name="sourceImage">Set source Bitmap</param> /// <param name="swapType">Set Swap Type</param> /// <param name="fixedValue">Set Fixed Value. Default is 0</param> /// <returns></returns> public static System.Drawing.Bitmap SwapColors(this System.Drawing.Bitmap sourceImage, ColourSwapType swapType, byte fixedValue = 0) { List <ArgbPixel> pixelListSource = GetPixelListFromBitmap(sourceImage); List <ArgbPixel> pixelListResult = null; switch (swapType) { case ColourSwapType.ShiftRight: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.red, red = t.green, green = t.blue, alpha = t.alpha }).ToList(); break; } case ColourSwapType.ShiftLeft: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.green, red = t.blue, green = t.red, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapBlueAndRed: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.red, red = t.blue, green = t.green, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapBlueAndRedFixGreen: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.red, red = t.blue, green = fixedValue, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapBlueAndGreen: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.green, red = t.red, green = t.blue, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapBlueAndGreenFixRed: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.green, red = fixedValue, green = t.blue, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapRedAndGreen: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = t.blue, red = t.green, green = t.red, alpha = t.alpha }).ToList(); break; } case ColourSwapType.SwapRedAndGreenFixBlue: { pixelListResult = (from t in pixelListSource select new ArgbPixel { blue = fixedValue, red = t.green, green = t.red, alpha = t.alpha }).ToList(); break; } } System.Drawing.Bitmap resultBitmap = GetBitmapFromPixelList(pixelListResult, sourceImage.Width, sourceImage.Height); return(resultBitmap); }