因此,我一直在尝试从当前游戏窗口(本质上是屏幕截图)创建图像文件,但到目前为止我所尝试的方法都不起作用。 MonoGame 开发人员尚未实现 RenderTarget2D.SaveAsPng()
和 RenderTarget2D.SaveAsJpeg()
方法以用于 Windows...
所以我想知道,还有其他选择吗?
这是一个示例代码,运行时会抛出 NotImplemented 错误,对于任何好奇的人:
Stream stream = new FileStream("screenshot.jpg", FileMode.Create, FileAccess.Write, FileShare.None);
screenshot.SaveAsJpeg(stream, 320, 180);
stream.Close();
变量 screenshot
是一个 RenderTarget2D
对象,在该对象中绘制了游戏画面。
感谢阅读,希望能得到一些帮助。
最佳答案
SaveAsJpeg 定义为:
public void SaveAsJpeg(Stream stream, int width, int height)
{
#if WINDOWS_STOREAPP
SaveAsImage(BitmapEncoder.JpegEncoderId, stream, width, height);
#elif WINDOWS_PHONE
var pixelData = new byte[Width * Height * GraphicsExtensions.Size(Format)];
GetData(pixelData);
var waitEvent = new ManualResetEventSlim(false);
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
var bitmap = new WriteableBitmap(width, height);
System.Buffer.BlockCopy(pixelData, 0, bitmap.Pixels, 0, pixelData.Length);
bitmap.SaveJpeg(stream, width, height, 0, 100);
waitEvent.Set();
});
waitEvent.Wait();
#elif MONOMAC
SaveAsImage(stream, width, height, ImageFormat.Jpeg);
#else
throw new NotImplementedException();
#endif
}
你能加吗
#define WINDOWS_STOREAPP
在你的主类中。
关于c# - 如何在 Windows 版 MonoGame 中制作屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156315/