MonoGameUi.Control.Draw C# (CSharp) Method

Draw() public method

Zeichenauruf für das Control (SpriteBatch ist bereits aktiviert)
public Draw ( SpriteBatch batch, Rectangle renderMask, GameTime gameTime ) : void
batch Microsoft.Xna.Framework.Graphics.SpriteBatch Spritebatch
renderMask Microsoft.Xna.Framework.Rectangle
gameTime Microsoft.Xna.Framework.GameTime Vergangene Spielzeit
return void
        public void Draw(SpriteBatch batch, Rectangle renderMask, GameTime gameTime)
        {
            if (!Visible) return;

            // Controlgröße ermitteln
            Rectangle controlArea = new Rectangle(AbsolutePosition, ActualSize);
            Rectangle localRenderMask = controlArea.Intersection(renderMask);

            // Scissor-Filter aktivieren
            batch.GraphicsDevice.ScissorRectangle = localRenderMask.Transform(AbsoluteTransformation);
            batch.Begin(rasterizerState: new RasterizerState() { ScissorTestEnable = true }, samplerState: SamplerState.LinearWrap, transformMatrix: AbsoluteTransformation);
            OnDraw(batch, controlArea, gameTime);
            batch.End();

            foreach (var child in Children.AgainstZOrdner())
            {
                Rectangle clientArea = ActualClientArea;
                clientArea.Location += AbsolutePosition;
                Rectangle clientRenderMask = clientArea.Intersection(renderMask);

                child.Draw(batch, clientRenderMask, gameTime);
            }

            invalidDrawing = false;
        }