示例#1
0
        public override void Update(GameTime gameTime)
        {
            var mouseState = Mouse.GetState();

            if (mouseState.LeftButton == ButtonState.Pressed &&
                _lastMouseState.LeftButton == ButtonState.Released)
            {
                var screenPosition = new Vector2(mouseState.X, mouseState.Y);
                if (RealScreenRectangle.Contains(new Point((int)screenPosition.X, (int)screenPosition.Y)))
                {
                    MouseLeftDownText?.Invoke(this, new MouseLeftDownEvent(screenPosition - ScreenPosition, screenPosition));
                }
            }

            if (mouseState.LeftButton == ButtonState.Released &&
                _lastMouseState.LeftButton == ButtonState.Pressed)
            {
                var screenPosition = new Vector2(mouseState.X, mouseState.Y);
                if (RealScreenRectangle.Contains(new Point((int)screenPosition.X, (int)screenPosition.Y)))
                {
                    MouseLeftUpText?.Invoke(this, new MouseLeftUpEvent(screenPosition - ScreenPosition, screenPosition));
                }
            }
            base.Update(gameTime);
        }
示例#2
0
        public void Init(GuiItem parent,
                         Vector2 position,
                         int width,
                         int height,
                         SpriteFont font,
                         int extureCharecterSpace,
                         int extureLineSpace,
                         string text,
                         Align align,
                         Color defaultColor)
        {
            _autoHeight          = height <= 0;
            Parent               = parent;
            Position             = position;
            Width                = width;
            Height               = height;
            Font                 = font;
            ExtureCharacterSpace = extureCharecterSpace;
            ExtureLineSpace      = extureLineSpace;
            DefaultColor         = defaultColor;
            TextAlign            = align;
            Text                 = text;// must be the last, because it invoke Caculate()

            MouseMove += (arg1, arg2) =>
            {
                if (RealScreenRectangle.Contains(new Point((int)arg2.MouseScreenPosition.X, (int)arg2.MouseScreenPosition.Y)))
                {
                    _inRange = true;
                    MouseEnterText?.Invoke(arg1, arg2);
                }
                else if (_inRange && !RealScreenRectangle.Contains(new Point((int)arg2.MouseScreenPosition.X, (int)arg2.MouseScreenPosition.Y)))
                {
                    _inRange = false;
                    MouseLeaveText?.Invoke(arg1, arg2);
                }
            };
        }