private void LogicDraw() { mSpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied); var drawOffset = RenderDisplayCenterPosition; var onDrawImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) { var i = frame.IndexOf(image); // Border + frame number (skip on animation) if (AnimationTimerRunning) { return; } var destRectangle = image.GetDestinationRectangle(drawOffset); var drawColor = (mSelectedDrawnAnimation == i ? Color.White : Color.Red); mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor); var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture); var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2); mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor); }); var onDrawLastImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) { var i = frame.IndexOf(image); // Border + frame number (skip on animation) if (AnimationTimerRunning) { return; } var destRectangle = image.GetDestinationRectangle(drawOffset); var drawColor = Color.SlateBlue; mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor); var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture); var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2); mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor); }); if (AnimationTimerRunning == false) { // draw a Cross // --- var drawRect = new Rectangle(0, RenderDisplayAnimation.Height / 2 - 1, RenderDisplayAnimation.Width, 1); mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet); // | drawRect = new Rectangle(RenderDisplayAnimation.Width / 2 - 1, 0, 1, RenderDisplayAnimation.Height); mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet); } // Background Images, if a Frame is selected if (mSelectedFrame != -1) { if (chkDrawLastFrame.Checked && mSelectedFrame > 0) { var lastFrame = mAnimation.Frames[mSelectedFrame - 1]; lastFrame.DrawBackground(mSpriteBatch, drawOffset, onDrawLastImage); } var frame = mAnimation.Frames[mSelectedFrame]; frame.DrawBackground(mSpriteBatch, drawOffset, onDrawImage); } // draw the Char if (chkCharDisplay.Checked && mOrientationChar != null) { var destRect = new Rectangle(drawOffset.X + SliderCharX.Value, drawOffset.Y + SliderCharY.Value, Constants.CharTileWidth, Constants.CharTileHeight); var srcRect = new Rectangle(0, 0, Constants.CharTileWidth, Constants.CharTileHeight); destRect.X -= Constants.CharTileWidth / 2; destRect.Y -= Constants.CharTileHeight / 2; mSpriteBatch.Draw(mOrientationChar, destRect, srcRect, Color.White); } // Foreground Images, if a Frame is selected if (mSelectedFrame != -1) { if (chkDrawLastFrame.Checked && mSelectedFrame > 0) { var lastFrame = mAnimation.Frames[mSelectedFrame - 1]; lastFrame.DrawForeground(mSpriteBatch, drawOffset, onDrawLastImage); } var frame = mAnimation.Frames[mSelectedFrame]; frame.DrawForeground(mSpriteBatch, drawOffset, onDrawImage); } // Image Selection? draw Position if (mSelectedFrame != -1 && mSelectedDrawnAnimation != -1) { var frameImage = mAnimation.Frames[mSelectedFrame][mSelectedDrawnAnimation]; var drawString = string.Format("{0:000} / {1:000}", frameImage.Offset.X, frameImage.Offset.Y ); var drawPos = new Vector2(RenderDisplayAnimation.Width - mSpriteFont.MeasureString(drawString).X - 10, RenderDisplayAnimation.Height - 20); mSpriteBatch.DrawString(mSpriteFont, drawString, drawPos, Color.White); } mSpriteBatch.End(); }
private void LogicDraw() { mSpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied); var drawOffset = RenderDisplayCenterPosition; var onDrawImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) { var i = frame.IndexOf(image); // Border + frame number (skip on animation) if (AnimationTimerRunning) { return; } var destRectangle = image.GetDestinationRectangle(drawOffset); var drawColor = (mSelectedDrawnAnimation == i ? Color.White : Color.Red); mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor); var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture); var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2); mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor); }); var onDrawLastImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) { var i = frame.IndexOf(image); // Border + frame number (skip on animation) if (AnimationTimerRunning) { return; } var destRectangle = image.GetDestinationRectangle(drawOffset); var drawColor = Color.SlateBlue; mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor); var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture); var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2); mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor); }); if (AnimationTimerRunning == false) { // draw a Cross // --- var drawRect = new Rectangle(0, RenderDisplayAnimation.Height / 2 - 1, RenderDisplayAnimation.Width, 1); mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet); // | drawRect = new Rectangle(RenderDisplayAnimation.Width / 2 - 1, 0, 1, RenderDisplayAnimation.Height); mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet); } // Background Images, if a Frame is selected if (mSelectedFrame != -1) { if (chkDrawLastFrame.Checked && mSelectedFrame > 0) { var lastFrame = mAnimation.Frames[mSelectedFrame - 1]; lastFrame.DrawBackground(mSpriteBatch, drawOffset, onDrawLastImage); } var frame = mAnimation.Frames[mSelectedFrame]; frame.DrawBackground(mSpriteBatch, drawOffset, onDrawImage); } // draw the Char if (chkCharDisplay.Checked && mOrientationChar != null) { var destRect = new Rectangle(drawOffset.X + SliderCharX.Value, drawOffset.Y + SliderCharY.Value, Constants.CharTileWidth, Constants.CharTileHeight); var srcRect = new Rectangle(0, 0, Constants.CharTileWidth, Constants.CharTileHeight); destRect.X -= Constants.CharTileWidth / 2; destRect.Y -= Constants.CharTileHeight / 2; mSpriteBatch.Draw(mOrientationChar, destRect, srcRect, Color.White); } // Foreground Images, if a Frame is selected if (mSelectedFrame != -1) { if (chkDrawLastFrame.Checked && mSelectedFrame > 0) { var lastFrame = mAnimation.Frames[mSelectedFrame - 1]; lastFrame.DrawForeground(mSpriteBatch, drawOffset, onDrawLastImage); } var frame = mAnimation.Frames[mSelectedFrame]; frame.DrawForeground(mSpriteBatch, drawOffset, onDrawImage); } // Image Selection? draw Position if (mSelectedFrame != -1 && mSelectedDrawnAnimation != -1) { var frameImage = mAnimation.Frames[mSelectedFrame][mSelectedDrawnAnimation]; var drawString = string.Format("{0:000} / {1:000}", frameImage.Offset.X, frameImage.Offset.Y ); var drawPos = new Vector2(RenderDisplayAnimation.Width - mSpriteFont.MeasureString(drawString).X - 10, RenderDisplayAnimation.Height - 20); mSpriteBatch.DrawString(mSpriteFont, drawString, drawPos, Color.White); } mSpriteBatch.End(); }
public void DrawForeground(SpriteBatch spriteBatch, OnDrawTileAnimationFrameImageDelegate onDraw = null) { Draw(spriteBatch, Point2D.Zero, false, onDraw); }
public void Draw(SpriteBatch spriteBatch, Point2D basePos, bool drawBackground, OnDrawTileAnimationFrameImageDelegate onDraw = null) { // Default to faster alternative if (onDraw == null) { Draw(spriteBatch, basePos); return; } foreach (var img in this.Where(img => img.IsBackground == drawBackground)) { img.Draw(spriteBatch, basePos); onDraw.Invoke(this, img); } }
public void DrawBackground(SpriteBatch spriteBatch, Point2D basePos, OnDrawTileAnimationFrameImageDelegate onDraw = null) { Draw(spriteBatch, basePos, true, onDraw); }