2

我正在使用 MonoGame 为 iOS 开发游戏。该游戏已经使用 MonoGame 为 Windows 8 (metro) 发布。我们得到了 MonoTouch,我遇到了几个问题,但只剩下一个主要问题。我不能截图。能够截取屏幕截图是游戏中必不可少的组成部分,因为我们有游戏区域共享,所以其他用户将能够看到保存的游戏的样子。据我了解,这在develop3d 分支中未实现,但我从某人那里听说它是在旧版本的develop 分支中实现的。有谁知道解决这个问题的方法?这似乎是一件相当普遍的事情。

任何帮助将不胜感激。

4

3 回答 3

2

对于 UIKit 屏幕,您可以使用:

UIScreen.Capture()

对于 OpenGL 屏幕,您可以使用:

iPhoneOSGameView.Capture()
于 2013-03-29T14:38:06.580 回答
0

您可能可以使用本机 iOS API 来做到这一点:

UIViewController controller = game.Services.GetService(typeof(UIViewController)) as UIViewController;

UIGraphics.BeginImageContext(controller.View.Frame.Size);
using (var context = UIGraphics.GetCurrentContext())
{
    controller.View.Layer.RenderInContext(context);
    using (var image = UIGraphics.GetImageFromCurrentImageContext())
    {
        //Save the image to file here   
    }
}
UIGraphics.EndImageContext();

检查错误,这不在我的脑海中。

我猜 XNA api 只是没有实现。

于 2013-03-27T17:29:46.137 回答
0

我自己实现了这个,我打算创建一个 PR 但没有时间。我用来创建屏幕截图的代码可以在这里找到:Texture2D.cs 我有一段时间没有与 remote 合并,所以不确定这将如何插入当前源。请注意,您要查看的方法是 SaveAsJpeg 和 SaveAsPng,棘手的部分是正确获取 GetTextureData()。这个问题完全有可能已经被其他人解决了。但这对我有用。

于 2014-04-14T12:20:49.603 回答