C# 从画布上截图,大小大于20000像素
我需要从画布的一部分截图,但因为RenderTargetBitmap 不支持从一个区域截图首先我应该从整个画布截图,然后用CroppedBitmap截图 但问题是画布的大小大于20000px,当我使用from RenderTargetBitmap拍摄屏幕快照时,有时会出现内存不足的错误C# 从画布上截图,大小大于20000像素,c#,wpf,C#,Wpf,我需要从画布的一部分截图,但因为RenderTargetBitmap 不支持从一个区域截图首先我应该从整个画布截图,然后用CroppedBitmap截图 但问题是画布的大小大于20000px,当我使用from RenderTargetBitmap拍摄屏幕快照时,有时会出现内存不足的错误 你有没有办法只截取一个带有起点和终点的屏幕截图,而不是在WPF中从我的画布上截取一个屏幕截图?你可以通过如下所示的方法将UI元素中的裁剪区域渲染成位图 它使用带有适当颜色的VisualBrush将作物绘制到Dra
你有没有办法只截取一个带有起点和终点的屏幕截图,而不是在WPF中从我的画布上截取一个屏幕截图?你可以通过如下所示的方法将UI元素中的裁剪区域渲染成位图 它使用带有适当颜色的
VisualBrush
将作物绘制到DrawingVisual
中,然后将其绘制到RenderTargetBitmap
中
private BitmapSource RenderCrop(Visual element, Rect crop)
{
var visualBrush = new VisualBrush
{
Visual = element,
ViewboxUnits = BrushMappingMode.Absolute,
Viewbox = crop,
Stretch = Stretch.None
};
var drawingVisual = new DrawingVisual();
using (var dc = drawingVisual.RenderOpen())
{
dc.DrawRectangle(visualBrush, null, new Rect(0, 0, crop.Width, crop.Height));
}
var bitmap = new RenderTargetBitmap(
(int)Math.Round(crop.Width), (int)Math.Round(crop.Height),
96, 96, PixelFormats.Default);
bitmap.Render(drawingVisual);
return bitmap;
}