/// <summary> /// Draws text in specified coordinates with rotation, scale and origin. /// </summary> public static void Draw(string text, float x, float y, float scaleX, float scaleY, float originX = 0, float originY = 0, float rotation = 0) { if (CurrentFont == null) { throw new NullReferenceException("CurrentFont is null! Did you forgot to set a font?"); } var transformMatrix = Matrix.CreateTranslation(new Vector3(-originX, -originY, 0)) * // Origin. Matrix.CreateRotationZ(MathHelper.ToRadians(-rotation)) * // Rotation. Matrix.CreateScale(new Vector3(scaleX, scaleY, 1)) * // Scale. Matrix.CreateTranslation(new Vector3(x, y, 0)); // Position. GraphicsMgr.AddTransformMatrix(transformMatrix); /* * Font is a wrapper for MG's SpriteFont, which uses non-premultiplied alpha. * Using GraphicsMode.Sprites will result in black pixels everywhere. * TextureFont, on the other hand, is just regular sprites, so it's fine to * draw with sprite mode. */ if (CurrentFont is Font) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.SpritesNonPremultiplied); } else { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); } CurrentFont.Draw(GraphicsMgr.Batch, text, Vector2.Zero, HorAlign, VerAlign); GraphicsMgr.ResetTransformMatrix(); }
public void Draw(Vector2 position, Vector2 origin, Vector2 scale, float rotation, Color color) { var mirroring = SpriteEffects.None; // Proper negative scaling. var scaleOffset = Vector2.Zero; if (scale.X < 0) { mirroring = mirroring | SpriteEffects.FlipHorizontally; scale.X *= -1; scaleOffset.X = Width; } if (scale.Y < 0) { mirroring = mirroring | SpriteEffects.FlipVertically; scale.Y *= -1; scaleOffset.Y = Height; } // Proper negative scaling. GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); GraphicsMgr.Batch.Draw( RenderTarget, position, RenderTarget.Bounds, color, MathHelper.ToRadians(rotation), scaleOffset + origin, scale, mirroring, 0 ); }
public void Draw(Rectangle destRect, Rectangle srcRect) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); srcRect.X += RenderTarget.Bounds.X; srcRect.Y += RenderTarget.Bounds.Y; GraphicsMgr.Batch.Draw(RenderTarget, destRect, srcRect, GraphicsMgr.CurrentColor); }
public void Draw(Rectangle destRect, float rotation, Color color) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); GraphicsMgr.Batch.Draw( RenderTarget, destRect, RenderTarget.Bounds, color, rotation, Vector2.Zero, SpriteEffects.None, 0 ); }
/// <summary> /// Draws text in specified coordinates. /// </summary> public static void Draw(string text, Vector2 position) { if (CurrentFont == null) { throw new NullReferenceException("CurrentFont is null! Did you forgot to set a font?"); } /* * Font is a wrapper for MG's SpriteFont, which uses non-premultiplied alpha. * Using GraphicsMode.Sprites will result in black pixels everywhere. * TextureFont, on the other hand, is just a bunch of regular sprites, * so it's fine to draw with sprite mode. */ if (CurrentFont is Font) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.SpritesNonPremultiplied); } else { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); } CurrentFont.Draw(GraphicsMgr.Batch, text, position, HorAlign, VerAlign); }
// Vectors. public void Draw(Vector2 position) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); GraphicsMgr.Batch.Draw(RenderTarget, position, GraphicsMgr.CurrentColor); }
// Vectors. // Rectangles. public void Draw(Rectangle destRect) { GraphicsMgr.SwitchGraphicsMode(GraphicsMode.Sprites); GraphicsMgr.Batch.Draw(RenderTarget, destRect, RenderTarget.Bounds, GraphicsMgr.CurrentColor); }