/// <summary> /// Applies greyscale toning to the image. /// </summary> /// <param name="source">The image this method extends.</param> /// <param name="rectangle"> /// The <see cref="Rectangle"/> structure that specifies the portion of the image object to alter. /// </param> /// <param name="mode">The formula to apply to perform the operation.</param> /// <param name="progressHandler">A delegate which is called as progress is made processing the image.</param> /// <returns>The <see cref="Image"/>.</returns> public static Image Greyscale(this Image source, Rectangle rectangle, GreyscaleMode mode = GreyscaleMode.Bt709, ProgressEventHandler progressHandler = null) { IImageProcessor processor = mode == GreyscaleMode.Bt709 ? (IImageProcessor)new GreyscaleBt709() : new GreyscaleBt601(); processor.OnProgress += progressHandler; try { return source.Process(rectangle, processor); } finally { processor.OnProgress -= progressHandler; } }
/// <summary> /// Applies greyscale toning to the image. /// </summary> /// <param name="source">The image this method extends.</param> /// <param name="mode">The formula to apply to perform the operation.</param> /// <param name="progressHandler">A delegate which is called as progress is made processing the image.</param> /// <returns>The <see cref="Image"/>.</returns> public static Image Greyscale(this Image source, GreyscaleMode mode = GreyscaleMode.Bt709, ProgressEventHandler progressHandler = null) { return Greyscale(source, source.Bounds, mode, progressHandler); }