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;
}