【问题标题】:How do I use text in SFML.NET?如何在 SFML.NET 中使用文本?
【发布时间】:2011-03-28 02:37:54
【问题描述】:

我刚刚下载了 SFML.NET 并添加了对包含在其中的库 DLL 的引用,但似乎没有 Text 类。在网站上的示例中,很明显正在使用一个 Text 对象......因此该示例无法编译。自己看...

alt text http://filebox.me/files/5gubdwfcr_helpme.png

只有字体,没有文字!有谁知道我做错了什么?

【问题讨论】:

    标签: c# sfml sfml.net


    【解决方案1】:

    您可能正在查看 2.x 示例,其中 String2D 已被删除并替换为 Text。 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();
        }
    }
    

    显然是一个非常精简的示例,但希望能证明差异是多么简单。

    【讨论】:

      【解决方案2】:

      在最新的 SFML.net 中有 Text 类。用法与 C++ 中的相同,只是你必须处理 C# properties

      【讨论】:

        【解决方案3】:

        您可能希望使用 String2D 类 (the String class in the documentation) 来实际绘制文本。 tutorial中这个类的变量叫做Text,这可能是你混淆的地方。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-20
          • 2014-07-14
          • 2011-04-14
          • 2014-07-27
          • 2015-06-07
          • 2018-12-20
          • 2021-10-11
          • 2010-12-17
          相关资源
          最近更新 更多