2

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

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

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

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

4

2 回答 2

5

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

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;
}
于 2012-09-19T13:23:29.157 回答
1

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

MemoryStream memoryStream = new MemoryStream();
Texture2D texture = Content.Load<Texture2D>( "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 );
于 2012-09-19T13:33:01.757 回答