我编写了以下代码,目的是将System.Drawing.Image转换为Microsoft.Xna.Framework.Graphics.Texture2D。
public Texture2D convertImage(Image img)
{
if (parent == null)
{
return null;
}
if (img == null)
{
return null;
}
//make a new Texture2D
Stream mystream = ToStream(img, ImageFormat.Png);
Texture2D tex = Texture2D.FromStream(parent.GraphicsDevice, mystream);
return tex;
}
private Stream ToStream(Image img, ImageFormat f)
{
var stream = new MemoryStream();
img.Save(stream, f);
stream.Position = 0;
return stream;
}
Parent指的是调用该函数的Microsoft.Xna.Framework.Game,问题是没有编译错误,但是当代码运行时,程序抛出ArgumentException“参数无效”。在第22行。我无法解决问题所在,我只能假设我使用代码的方式有问题。
传递给该函数的图像是标准图像,我可以使用“ img.Save(filname); ”将其保存到文件中,只有在我尝试时才会出现错误保存到流中。
更新 似乎问题是System.Drawing.Image在我调用Image.Save()之前被处理掉,这导致所有的Image参数都返回“参数异常发生。参数无效。”,所以要详细说明我原来的问题,在完成使用之前,如何阻止物体被丢弃?
感谢您的帮助。