我刚刚下载了 SFML.NET 并添加了对包含在其中的库 DLL 的引用,但似乎 Text 类不存在。在网站上的示例中,很明显正在使用一个 Text 对象......因此该示例无法编译。你自己看...
替代文字 http://filebox.me/files/5gubdwfcr_helpme.png
只有字体,没有文字!任何人都知道我可能做错了什么?
我刚刚下载了 SFML.NET 并添加了对包含在其中的库 DLL 的引用,但似乎 Text 类不存在。在网站上的示例中,很明显正在使用一个 Text 对象......因此该示例无法编译。你自己看...
替代文字 http://filebox.me/files/5gubdwfcr_helpme.png
只有字体,没有文字!任何人都知道我可能做错了什么?
您可能正在查看已删除 String2D 并替换为 Text 的 2.x 示例。String2D 适用于 1.x,您可以使用 Text 属性来更改它的显示内容。
幸运的是,接口非常相似。您应该能够简单地将任何声明为 Text 的内容替换为 String2D 并将 Text 属性更改为 DisplayedString 而无需更改任何其他代码。每个版本的示例:
VB.Net
SFML.NET 1.x
Imports SFML
Imports SFML.Window
Imports SFML.Graphics
Public Sub Main()
Dim Output As New RenderWindow(New VideoMode(640, 480), "SFML.NET Text Example")
Dim ExampleText As New String2D("", New Font("myfont.tff"))
ExampleText.Position = New Vector2(5, 5)
Do While (true)
Output.Clear(New SFML.Graphics.Color(0,128,160))
ExampleText.Text= String.Format("Hello, world! {0}", DateTime.Now.ToString("hh:MM.ss"))
Output.Draw(ExampleText)
Output.Display()
End While
End Sub
SFML.NET 2.x
Imports SFML
Imports SFML.Window
Imports SFML.Graphics
Public Sub Main()
Dim Output As New RenderWindow(New VideoMode(640, 480), "SFML.NET Text Example")
Dim ExampleText As New Text("", New Font("myfont.tff"))
ExampleText.Position = New Vector2(5, 5)
Do While (true)
Output.Clear(New SFML.Graphics.Color(0,128,160))
ExampleText.DisplayedString = String.Format("Hello, world! {0}", DateTime.Now.ToString("hh:MM.ss"))
Output.Draw(ExampleText)
Output.Display()
End While
End Sub
C#
SFML.NET 1.x
using SFML;
using SFML.Window;
using SFML.Graphics;
public void Main()
{
var output = new RenderWindow(new VideoMode(640, 480), "SFML.NET Text Example");
var exampleText = new String2D("", new Font("myfont.tff"));
exampleText.Position = new Vector2(5, 5);
while(true)
{
var timestamp = DateTime.Now.ToString("hh:MM.ss");
output.Clear(new SFML.Graphics.Color(0, 128, 160));
exampleText.Text = $"Hello, world! {timestamp}";
output.Draw(exampleText);
output.Display();
}
}
SFML.NET 2.x
using SFML;
using SFML.Window;
using SFML.Graphics;
public void Main()
{
var output = new RenderWindow(new VideoMode(640, 480), "SFML.NET Text Example");
var exampleText = new Text("", new Font("myfont.tff"));
exampleText.Position = new Vector2(5, 5);
while(true)
{
var timestamp = DateTime.Now.ToString("hh:MM.ss");
output.Clear(new SFML.Graphics.Color(0, 128, 160));
exampleText.DisplayedString = $"Hello, world! {timestamp}";
output.Draw(exampleText);
output.Display();
}
}
显然是一个非常精简的例子,但希望能证明差异是多么简单。
在最新的 SFML.net 中有Text
类。用法与 C++ 中的相同,只是你必须处理 C#properties
您可能希望使用 String2D 类(文档中的 String 类)来实际绘制文本。教程中这个类的变量叫做Text,这可能是你困惑的地方。