【问题标题】:Set the bottom right of a spritefont in XNA?在 XNA 中设置 spritefont 的右下角?
【发布时间】:2012-10-20 23:20:30
【问题描述】:

好吧,我一直在尝试根据右下角设置 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 方法不提供边到边的长度?

谢谢!

【问题讨论】:

  • 高度始终相同,等于行高。如果它的字体很大,你的字符和字体底部之间的差距可能很大。
  • 可以发截图吗?您是否要在屏幕右下角绘制文本?
  • 在哪里以及如何调用 setBottomRight 方法?
  • 数学看起来是对的。确保您的 fontText 字符串在测量时不为空。根据你的字体大小,为什么你应该看到比底角更多的 10,10?如果你在屏幕的左上角画一个右下角的字符串,它当然会大部分被切断。在 10,10 时,除非您的字体很小,否则我不会期望看到太多。

标签: c# xna xna-4.0


【解决方案1】:

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

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

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

会解决你的问题!

【讨论】:

  • 如果我将字体大小设置为 12,但我在屏幕上画了一个标记,其左上角为 100、100,并使用该代码将我的字体右下角设置为 100,100,则可以使用,字体略低于我画的标记...字体大小为72,以及为什么它不起作用的想法? (X轴很好)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2011-04-14
相关资源
最近更新 更多