我正在使用Microsoft.DirectX.Direct3D
并Microsoft.DirectX
以 3D 形式呈现一些数据。
现在,我想绘制文本来指示空间内的高度值。如下图所示:
现在我面临两个主要问题:
问题 1:如您所见,绘制的文字是上下颠倒的。我该怎么做才能使其正确显示?
问题 2:Direct3DXException
当我尝试旋转屏幕时出现错误。错误信息如下:
下面是我DrawText()
使用Sprite
类的代码
Microsoft.DirectX.Direct3D Device = new Device(0, DeviceType.Hardware, this.panel1,
CreateFlags.HardwareVertexProcessing, presentationParameters);
private void Render()
{
device.BeginScene();
if(checkBox1.checked)
{
DrawText();
}
device.EndScene();
device.SetTexture(0, null);
device.Present();
}
private void DrawText()
{
Sprite fontsprite = new Sprite(device);
fontsprite.Begin(SpriteFlags.AlphaBlend | SpriteFlags.ObjectSpace);
_font = new Microsoft.DirectX.Direct3D.Font(device, 10, 10, FontWeight.Bold, 1, false, CharacterSet.Ansi, Precision.Default, FontQuality.ClearType, PitchAndFamily.DefaultPitch, "face1");
_font.DrawText(fontsprite, "1.5 Km", 120, 15, Color.Black);
_font.DrawText(fontsprite, "2.5 Km", 120, 25, Color.Black);
_font.DrawText(fontsprite, "3.5 Km", 120, 35, Color.Black);
fontsprite.Transform.Translate(120, 100, 100);
fontsprite.End();
}
需要一些帮助来解决问题 1 和问题 2。谢谢。
更新:问题 1 已由我自己解决。现在只剩下问题 2。
解决问题1的代码:
fontsprite.Transform = Matrix.RotationZ((float)Math.PI);
fontsprite.Transform *= Matrix.Translation(heightBoxSize, heightValue, heightBoxSize);
fontsprite.Transform.Translate(100, 100, 100);