我想使用Texture2d作为system.drawing.bitmap

XNA.Texture2D到System.Drawing.Bitmap我确信这回答了我的问题,但它链接了一个外部网站,不再可用。

我在xna游戏中使用Windows窗体。 我想为我的一个面板使用背景图像。 从文件加载很容易,但是当游戏部署到另一个系统时,文件位置显然会有所不同。

Bitmap bmp = new Bitmap(@"c:\myImage.png"); 

在上面提到的问题中,有人建议使用Texture2d.saveToPng,然后从内存流中打开位图。 这听起来不错,如果有人可以引导我朝这个方向发展。 还有其他想法吗?

您可以使用两种方法来创建位图,使用Texture2D.SaveAsJpeg()Texture2D.SaveAsPng()

 MemoryStream memoryStream = new MemoryStream(); Texture2D texture = Content.Load( "Images\\test" ); texture.SaveAsJpeg( memoryStream, texture.Width, texture.Height ); //Or SaveAsPng( memoryStream, texture.Width, texture.Height ) System.Drawing.Bitmap bmp = new System.Drawing.Bitmap( memoryStream ); 

这对我有用。 如果有问题请告诉我。

 public static Image Texture2Image(Texture2D texture) { Image img; using (MemoryStream MS = new MemoryStream()) { texture.SaveAsPng(MS, texture.Width, texture.Height); //Go To the beginning of the stream. MS.Seek(0, SeekOrigin.Begin); //Create the image based on the stream. img = Bitmap.FromStream(MS); } return img; }