From acea7b2e728787a0d83bbf83c8c1f042d2c32e7e Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 3 Jun 2024 10:15:45 +0800 Subject: + plugins project --- .../Controls/LayoutControl.cs | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs') diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs new file mode 100644 index 0000000..3935baa --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs @@ -0,0 +1,40 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Gui.Controls +{ + public abstract class LayoutControl : ItemsControl + { + protected LayoutControl() + { + HorizontalAlignment = HorizontalAlignment.Stretch; + VerticalAlignment = VerticalAlignment.Stretch; + BackgroundColor = Color.Transparent; + } + + private bool _isLayoutValid; + + public override void InvalidateMeasure() + { + base.InvalidateMeasure(); + _isLayoutValid = false; + } + + public override void Update(IGuiContext context, float deltaSeconds) + { + base.Update(context, deltaSeconds); + + if (!_isLayoutValid) + { + Layout(context, new Rectangle(Padding.Left, Padding.Top, ContentRectangle.Width, ContentRectangle.Height)); + _isLayoutValid = true; + } + } + + protected abstract void Layout(IGuiContext context, Rectangle rectangle); + + protected static void PlaceControl(IGuiContext context, Control control, float x, float y, float width, float height) + { + LayoutHelper.PlaceControl(context, control, x, y, width, height); + } + } +} \ No newline at end of file -- cgit v1.1-26-g67d0