c# - 如何在 Windows 版 MonoGame 中制作屏幕截图?

标签 c# monogame

因此,我一直在尝试从当前游戏窗口(本质上是屏幕截图)创建图像文件,但到目前为止我所尝试的方法都不起作用。 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/

相关文章:

c# - .NET 核心 - MSB3277 : Found conflicts between different versions

c# - 屏幕分辨率不断重置为默认值

c# - 使用内容管道的 Monogame XML 序列化

c# - MonoLauncher 实例在停止我的 Visual Studio 调试后暂停

c# - TCP 连接阶段失败(从 JAVA 客户端调用 Web 服务到 C# 服务器)

c# - 如何确保在构造函数完成执行之前不调用任何内容

c# - CS0246 : The type or namespace name 'CrystalDecisions' could not be found

c# - WPF caliburn屏幕和选项卡控件

transparency - 在 MonoGame 运行时更改纹理透明度

xna - 使用monogame开发的Windows商店游戏中未显示鼠标光标