SpriteBatch.Begin
takes a Matrix
parameter, transforming the sprites you draw (including SpriteFont
) onto whichever plane you desire.
Unfortunately Matrix
does not provide Create*
methods for creating skew matrices. But it is simple enough to create such a matrix by hand. The following piece of code is tested and is pretty close to what you want:
Matrix skew = Matrix.Identity;
skew.M12 = (float)Math.Tan(MathHelper.ToRadians(36.87f));
Matrix rotate = Matrix.CreateRotationZ(MathHelper.ToRadians(270+26.565f));
sb.Begin(SpriteSortMode.Deferred, null, null, null, null, null, skew * rotate);
// ... draw your sprites here ...
sb.End();
The only difference to your diagram is that Y and Y' point in the opposite direction, because XNA's SpriteBatch
works in "client" coordinates ((0,0) at top left, and Y+ is down).