我正在使用 xBim Toolkit ( http://docs.xbim.net/ ) 进行 3D 对象渲染,并且需要在单击按钮时创建当前场景的屏幕截图。xBim 使用画布来表示对象的图形。整个项目基于 C#、.NET 工具和 Javascript,因此这是可用于解决此问题的工具范围。
我已经尝试过使用 html2canvas ( https://html2canvas.hertzen.com/ ) 和 dom-to-image ( https://github.com/tsayen/dom-to-image ) 库,但也尝试使用默认画布方法(如 myCanvas.toDataUrl() 或 myCanvas.toBlob())。它们都只产生一个带有黑色或白色背景的空图像,但没有保存 xBim 对象。
我可以获得任何有用屏幕截图的唯一方法是使用 System.Drawing.Graphics 然后创建整个屏幕的屏幕截图(由于许多原因,这不是最佳实现)。
public static void MakeScreenshot()
{
var x = Math.Abs(WebBrowser.MousePosition.X);
var y = Math.Abs(WebBrowser.MousePosition.Y);
var bounds = Screen.FromPoint(new Point(x, y)).Bounds;
Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
Graphics graphics = Graphics.FromImage(bitmap as System.Drawing.Image);
graphics.CopyFromScreen(25, 25, 25, 25, bitmap.Size);
string screenshotFilePath = Path.Combine(DirectoryPath, "Screenshot.jpg");
bitmap.Save(screenshotFilePath, ImageFormat.Jpeg);
}
我想只截取画布区域的屏幕截图。是否使用 Javascript 或 C# 代码实现并不重要(即使使用 System.Drawing.Graphics,但只剪切部分屏幕)