public static BitmapSource ShowROI(this BitmapSource source, Rect[] defectRects, int penThick = 3) { var brush = Brushes.Red; NamedNullException.Assert(source, nameof(source)); NamedNullException.Assert(defectRects, nameof(defectRects)); if (defectRects.Length == 0) { return(source); } var dv = new DrawingVisual(); var dc = dv.RenderOpen(); dc.DrawImage(source, source.FullRect()); foreach (var defect in defectRects) { dc.DrawRectangle(null, new Pen(brush, penThick), Rect.Intersect(defect, source.FullRect())); } dc.Close(); var renderedBmp = new RenderTargetBitmap( source.PixelWidth, source.PixelHeight, 96, 96, PixelFormats.Default); renderedBmp.Render(dv); return(renderedBmp); }