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;
            }
        }
Beispiel #2
0
        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);
        }