我如何正确alignment文本?

我正在使用SpriteBatch.DrawString ,这似乎没有文本alignment的重载。 我如何绘制alignment的文字?

我创建了一个帮助器类 ,它接受以下参数,并让您将文本垂直或水平alignment或居中在Rectangle中。 传入两个枚举都将导致与默认的spritebatch函数相同的行为。

emuns的选项是。

 public enum TextHorizontal { LeftAligned, CenterAligned, RightAligned } public enum TextVertical { TopAligned, CenterAligned, BottomAligned } 

而在感兴趣的functionmath是相当简单的。

  public void Render(SpriteBatch spriteBatch, string value, Rectangle renderArea, TextHorizontal h = TextHorizontal.LeftAligned, TextVertical v = TextVertical.TopAligned) { var location = new Vector2(renderArea.X, renderArea.Y); var size = SpriteFont.MeasureString(value); switch (h) { case TextHorizontal.CenterAligned: location.X += (renderArea.Width - size.X) / 1.9f; break; case TextHorizontal.RightAligned: location.X += renderArea.Width - size.X; break; } switch (v) { case TextVertical.CenterAligned: location.Y += (renderArea.Height - size.Y) / 1.9f; break; case TextVertical.BottomAligned: location.Y += renderArea.Height - size.Y; break; } spriteBatch.DrawString(SpriteFont, value, location, Color); }