public override void Draw(CanvasDrawingSession drawingSession, bool useSpriteBatch)
        {
            if (!surfaceLoaded)
                return;
            // 保护原先画布的混合模式
            var previousBlend = drawingSession.Blend;

            drawingSession.Blend = blendState;

#if WINDOWS_UWP
            if (useSpriteBatch)
            {
                // 使用 SpriteBatch 可以提高性能
                using (var spriteBatch = drawingSession.CreateSpriteBatch())
                {
                    Draw(drawingSession, spriteBatch);
                }
            }
            else
            {
                Draw(drawingSession, null);
            }
#else
            Draw(drawingSession);
#endif

            drawingSession.Blend = previousBlend;
        }
        public void Draw(CanvasDrawingSession drawingSession, bool useSpriteBatch)
        {
            if (surfaceLoaded)
            {
                // 保护原先画布的混合模式
                var previousBlend = drawingSession.Blend;

                drawingSession.Blend = CanvasBlend.SourceOver;

#if WINDOWS_UWP
                if (useSpriteBatch)
                {
                    // 使用 SpriteBatch 可以提高性能
                    using (var spriteBatch = drawingSession.CreateSpriteBatch())
                    {
                        Draw(drawingSession, spriteBatch);
                    }
                }
                else
                {
                    Draw(drawingSession, null);
                }
#else
            Draw(drawingSession);
#endif

                drawingSession.Blend = previousBlend;
            }
        }
Beispiel #3
0
        // Draws all of the active particles.
        public void Draw(CanvasDrawingSession drawingSession, bool useSpriteBatch)
        {
            var previousBlend = drawingSession.Blend;

            drawingSession.Blend = blendState;

#if WINDOWS_UWP
            if (useSpriteBatch)
            {
                using (var spriteBatch = drawingSession.CreateSpriteBatch())
                {
                    Draw(drawingSession, spriteBatch);
                }
            }
            else
            {
                Draw(drawingSession, null);
            }
#else
            Draw(drawingSession);
#endif

            drawingSession.Blend = previousBlend;
        }
            public void RunScenario(CanvasDrawingSession drawingSession, CanvasSpriteSortMode sortMode)
            {
                switch (method)
                {
                    case Scenario.DrawMethod.Win2DSpriteBatch:
                        using (var sb = drawingSession.CreateSpriteBatch(sortMode))
                        {
                            foreach (var sprite in sprites)
                            {
                                sb.Draw(sprite.Bitmap, sprite.Position, sprite.Tint, Vector2.Zero, sprite.Rotation, Vector2.One, CanvasSpriteFlip.None);
                            }
                        }
                        break;

                    case Scenario.DrawMethod.DrawImage:
                        var oldTransform = drawingSession.Transform;
                        foreach (var sprite in sprites)
                        {
                            drawingSession.Transform = Matrix3x2.CreateRotation(sprite.Rotation) * Matrix3x2.CreateTranslation(sprite.Position);
                            drawingSession.DrawImage(sprite.Bitmap, Vector2.Zero, sprite.Bitmap.Bounds, sprite.Tint.W);
                        }
                        drawingSession.Transform = oldTransform;
                        break;
                }
            }