我开始学习SL5和3D API。任何人都可以帮助解决这个问题:我正在创建3D对象,例如Cube,并希望在那里显示Text。我怎样才能做到这一点?我可以显示文字,还是需要在任何地方使用图片?
谢谢,
迪马。
答案 0 :(得分:0)
据我所知,sl5中没有用于在3d场景中制作文本的api。 但是,有一种替代方法可以使用一个名为spritebatch的对象。 spritebatch是xna中的一个高效类,目前它已经集成在sl5中。 因此,要显示一些文本,您需要1)在画布上绘制文本2)将画布转换为可写的位图,3)将此可写位图映射到spritebatch,可以通过将两个三角形设计为平面来自定义。下面是使用mytexture上的spritebatch绘图文本的示例。
private void DrawingSurface_Draw(object sender, DrawEventArgs e)
{
//Thread.Sleep(50);
e.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, new Microsoft.Xna.Framework.Color(0, 0, 0, 0), 1.0f, 0);
spriteBatch.Begin(e.GraphicsDevice);
spriteBatch.Draw(myTexture, new Vector2(0, 0), null, Microsoft.Xna.Framework.Color.White);
spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(150, 0,100,100), null, Microsoft.Xna.Framework.Color.White);
spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(250, 0, 50, 50), null, Microsoft.Xna.Framework.Color.White);
spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(150, 150, 200, 200), new Microsoft.Xna.Framework.Rectangle(0, 0, 100, 100), Microsoft.Xna.Framework.Color.White);
spriteBatch.End();