0

好吧,我一直在尝试根据右下角设置 spritefont 的位置,但是,当我设置它时,它还差得很远,我将它设置为 10,10,我什至看不到它,如果我将它设置为40,40 我刚开始能够看到右下角...我认为我做得对...这是我的代码:

public void DrawFont(SpriteBatch spriteBatch)
    {
        spriteBatch.DrawString(gameFont, fontText, fontPos, fontColor);
    }

fontPos 是左上角。这是在它自己的类中。然后我有另一种方法(在同一个类中):

public void setBottomRight(Vector2 newVector2)
    {
        fontPos.X = newVector2.X - gameFont.MeasureString(fontText).X;
        fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;
    }

我在 Game.cs 类的更新方法中使用它,并将向量设置为 10,10 处的新向量,但我看不到文本,我检查它是否只是文本中的一个间隙,但事实并非如此。

我觉得这是对的……还是我犯了一个愚蠢的错误……?还是 MeaureString 方法不提供从边到边的长度?

谢谢!

4

1 回答 1

1

你原来的逻辑几乎是合理的。唯一不正确的是 Measurestring Y 值。测量字符串的 Y 值返回字符串垂直大小的两倍。因此,如果您将大小为 14 的字符串作为字符串,它将返回 28。这意味着它不会给您高度,而是给您双倍的数量,从而将您的字符串扔到屏幕上。更换

fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;

fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y/2;

将解决您的问题!

于 2012-10-20T15:20:30.520 回答