WPF中的ScreenShot

时间:2016-09-26 09:16:41

标签: c# wpf

我有两个控制图像视图和画布。 在图像上我绘制矩形。虽然截图我只是得到图像而不是矩形。

使用下面的代码我得到黑色图像

int Width = (int)canvas1.RenderSize.Width;
            int Height = (int)canvas1.RenderSize.Height;
RenderTargetBitmap renderTargetBitmap =
new RenderTargetBitmap(Width, Height, 96, 96, PixelFormats.Pbgra32);
            renderTargetBitmap.Render(canvas1);
            PngBitmapEncoder pngImage = new PngBitmapEncoder();
            pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
            using (Stream fileStream = File.Create(filePath))
            {
                pngImage.Save(fileStream);

            }

如果我用图像替换画布只有图像来了。 如何截取包含两个控件的屏幕截图?

1 个答案:

答案 0 :(得分:1)

no-op调用渲染完成之后,在获取屏幕截图之前有一个render。 我也假设你能够在视口中查看绘制的矩形 它只是没有出现在屏幕截图中。如果不确定矩形的颜色与图像背景不同。

renderTargetBitmap.Render(canvas1);
//no-op for rendering to complete before taking screenshot.
_dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { }));
//screenshot code here.