我在MonoGame中保存屏幕截图非常困难。每次我保存屏幕截图时,它都会搞得一团糟,有点像优质频道如果你没有订阅它们的样子。就像搞乱VHS录像带上的跟踪一样。我现在知道发生了什么。我创建了一个全新的项目,只是为了看它是我的项目还是MonoGame。它与新项目完美配合。我知道没有人能够知道我到底做错了什么,但有人甚至可以向我建议为什么这样的事情会发生吗?我应该看看我的相机课吗?或者也许有关保存文件的事情搞砸了?我不知所措,今天微软有一场比赛,我显然已经错过了截止日期。以下是我的保存截图方法:
async void ScreenShot()
{
RenderTarget2D renderTarget = new RenderTarget2D(
_graphics.GraphicsDevice,
_graphics.GraphicsDevice.PresentationParameters.BackBufferWidth,
_graphics.GraphicsDevice.PresentationParameters.BackBufferHeight);
_graphics.GraphicsDevice.SetRenderTarget(renderTarget);
Draw(new GameTime());
_graphics.GraphicsDevice.SetRenderTarget(null);
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
Stream stream = null;
if (storageFolder != null) stream = await storageFolder.OpenStreamForWriteAsync("testing.jpg", CreationCollisionOption.ReplaceExisting);
if (stream != null)
{
renderTarget.SaveAsJpeg(stream, renderTarget.Width, renderTarget.Height);
}
stream.Dispose();
}
答案 0 :(得分:0)
好吧,好吧,我把它缩小了一点。我刚刚取出函数的一部分,将它写入文件,然后将renderTarget转换为Texture2D然后渲染它,它看起来很完美。很明显,问题在于保存文件。这并没有完全解决我的问题,但它至少给了我一些可以使用的东西。
答案 1 :(得分:0)
我想出来了,这是模拟器的一个问题。出于某种原因,当通过模拟器写入文件时,它会出现乱码,但是当在实际设备上运行游戏时,它可以完美地运行。