internal void DrawString(SpriteFont font, string line, Vector2 offset, Color color, object objectRequestingChange) { mSpriteBatch.DrawString(font, line, offset, color, objectRequestingChange); }
private void RenderUsingSpriteFont(SpriteRenderer spriteRenderer) { Vector2 offset = new Vector2(this.Renderer.Camera.RenderingXOffset, Renderer.Camera.RenderingYOffset); float leftSide = offset.X + this.GetAbsoluteX(); float topSide = offset.Y + this.GetAbsoluteY(); SpriteFont font = LoaderManager.Self.DefaultFont; // Maybe this hasn't been loaded yet? if (font != null) { switch (this.VerticalAlignment) { case Graphics.VerticalAlignment.Top: offset.Y = topSide; break; case Graphics.VerticalAlignment.Bottom: { float requiredHeight = (this.mWrappedText.Count) * font.LineSpacing; offset.Y = topSide + (this.Height - requiredHeight); break; } case Graphics.VerticalAlignment.Center: { float requiredHeight = (this.mWrappedText.Count) * font.LineSpacing; offset.Y = topSide + (this.Height - requiredHeight) / 2.0f; break; } } float offsetY = offset.Y; for (int i = 0; i < mWrappedText.Count; i++) { offset.X = leftSide; offset.Y = (int)offsetY; string line = mWrappedText[i]; if (HorizontalAlignment == Graphics.HorizontalAlignment.Right) { offset.X = leftSide + (Width - font.MeasureString(line).X); } else if (HorizontalAlignment == Graphics.HorizontalAlignment.Center) { offset.X = leftSide + (Width - font.MeasureString(line).X) / 2.0f; } offset.X = (int)offset.X; // so we don't have half-pixels that render weird spriteRenderer.DrawString(font, line, offset, Color, this); offsetY += LoaderManager.Self.DefaultFont.LineSpacing; } } }