private string WhatElement(IHitTestable clickedElement) { if (clickedElement is AxisBase axis) { return((axis.IsXAxis ? "X" : "Y") + $"Axis, Type={axis.GetType().Name}, Id={axis.Id}, Alignment={axis.AxisAlignment}"); } else if (clickedElement is IChartModifierSurface) { return("The inner chart surface"); } return(null); }
public void Update() { if (_lastHitTest != null) { if (MouseManager.IsDown(MouseButton.Left)) { var test = _lastHitTest.HitTest(); if (test.IsHit) { return; } _lastHitTest = null; } _lastHitTest = null; } if (_draggable.HitTest().IsHit) { var delta = _draggable.GetMoveDelta(); _draggable.InvalidateDelta(); var x = ((int)(CleanRect.X - delta.X)).Clamp(0, _mainWindow.Width - CleanRect.Width); var y = ((int)(CleanRect.Y - delta.Y)).Clamp(0, _mainWindow.Height - CleanRect.Height); X = x; Y = y; _draggable.SetRect(new Rectangle(_captionBarRect.Left, _captionBarRect.Top, _captionBarRect.Width - Ui.CaptionHeight - BorderSize, _captionBarRect.Height)); SetRect(new Rectangle(X, Y, Width, Height)); IsDirty = true; return; } _ = _closeButton.HitTest(); for (var i = _controls.Count - 1; i > -1; i--) { var test = _controls[i].HitTest(); if (!test.IsHit) { continue; } _lastHitTest = test.Control; return; } }
private HitBox(bool isHit, IHitTestable control) { IsHit = isHit; Control = control; }
public static HitBox Hit(IHitTestable control) { return(new HitBox(true, control)); }