2010-05-04 57 views

回答

2

您应该可以使用该方法,但请确保您的XNA Texture2D使用32bbpARGB格式创建。任何其他格式都会阻止该方法直接运行。

+0

[Texture2D = bgr32]。但还有另一个问题,我怎么能'重新格式化纹理到32bbpARGB? – nilphilus 2010-05-04 21:11:45

+0

for(int i = 0; i <4 * texture.Width * texture.Height; i + = 4) { byte tmp = textureData [i + 0]; textureData [i + 0] = textureData [i + 2]; // b textureData [i + 2] = tmp; // r textureData [i + 3] = 255; // A } 它不需要太多时间,但可以改进。 – nilphilus 2010-05-04 21:35:42

1

更简单的方法是将Texture2D使用Texture2D.SaveAsPngTexture2D.SaveAsJpeg保存到内存流中,然后使用Bitmap(Stream)打开虚拟文件。

相关问题