コード例 #1
0
ファイル: MapCtl.cs プロジェクト: rbrzezinski/Trax
        /// <summary>
        /// Handles control's MouseWheel event
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseWheel(MouseEventArgs e)
        {
            var s0 = CurrentScale;
            var s1 = CurrentScale;
            var sf = FitScale;
            var c0 = new PointF(e.X - CtlCenter.X, e.Y - CtlCenter.Y);       // relative control position of cursor (in pixels)
            var m0 = new PointF(c0.X / s0 - Offset.X, c0.Y / s0 - Offset.Y); // relative map position of cursor

            if (e.Delta > 0 && s0 < 100)
            {
                s1 *= 1.5f;
            }
            if (e.Delta < 0 && s0 > sf)
            {
                s1 /= 1.5f;
            }
            if (s1 != s0)
            {
                CurrentScale = s1;
                Offset       = new PointF(c0.X / s1 - m0.X, c0.Y / s1 - m0.Y);
                Invalidate();
                if (ScaleChanged != null)
                {
                    ScaleChanged.Invoke(this, EventArgs.Empty);
                }
            }
        }
コード例 #2
0
 protected virtual void OnScaleChanged(ValueChangedEventArgs e)
 {
     if (!_externallySet)
     {
         ScaleChanged?.Invoke(this, e);
     }
 }
コード例 #3
0
        protected void RecalculateScale()
        {
            var scale   = LocalScale * globalScale;
            var parents = GetParents();

            Scale           = parents.Any() ? parents.Select(rt => rt.LocalScale).Aggregate((parent, child) => parent * child) * scale : scale;
            recalculateRect = true;
            ScaleChanged?.Invoke();
        }
コード例 #4
0
        void IDragHandler.OnDrag([NotNull] PointerEventData eventData)
        {
            if (targetTransform == null)
            {
                return;
            }

            float scale = 1f / ModuleListPanel.CanvasScale;
            var   size  = targetTransform.sizeDelta + Vector2.Scale(eventData.delta, new Vector2(scale, -scale));

            targetTransform.sizeDelta = Vector2.Max(size, minSize);
            ScaleChanged?.Invoke();
            //Debug.Log(targetTransform.sizeDelta);
        }
コード例 #5
0
ファイル: MapCtl.cs プロジェクト: rbrzezinski/Trax
 /// <summary>
 /// Resets the map view to default value (zoomed out full, centered)
 /// </summary>
 public void ResetView()
 {
     lock (LayerLock) {
         Layers = new[] {
             new Layer(3, RiverColor),
             new Layer(4, CrossColor),
             new Layer(2, RoadColor),
             new Layer(1, SwitchColor),
             new Layer(0, TrackColor)
         };
     }
     FitScale  = CurrentScale = GetFitScale();
     MapCenter = new PointF(Splines.Bounds.X + Splines.Bounds.Width / 2, Splines.Bounds.Y + Splines.Bounds.Height / 2);
     Offset    = new PointF(0, 0);
     Invalidate();
     if (ScaleChanged != null)
     {
         ScaleChanged.Invoke(this, EventArgs.Empty);
     }
     if (PositionChanged != null)
     {
         PositionChanged.Invoke(this, EventArgs.Empty);
     }
 }
コード例 #6
0
 private void OnScalechanged()
 {
     ScaleChanged?.Invoke(Scale);
     TransformChanged?.Invoke(this);
 }
コード例 #7
0
 /// <summary>
 ///     Raises the <see cref="ScaleChanged" /> event.
 /// </summary>
 /// <seealso cref="EventArgs" />
 protected virtual void OnScaleChanged()
 {
     ScaleChanged?.Invoke(this, EventArgs.Empty);
 }
コード例 #8
0
 private void OnScaleChanged(SyncObject obj)
 {
     ScaleChanged.RaiseEvent();
 }
コード例 #9
0
 protected virtual void OnScaleChanged(EventArgs e)
 {
     ScaleChanged?.Invoke(this, e);
 }
コード例 #10
0
 public void RaiseScaleChanged(double newScale)
 {
     ScaleChanged?.Invoke(this, newScale);
 }
コード例 #11
0
        //---------------------------------------------------------------------------

        private void OnScaleChanged(Vector2 oldScale, Vector2 newScale)
        {
            ScaleChanged?.Invoke(oldScale, newScale);
        }
コード例 #12
0
 protected virtual void OnScaleChanged(ScaleEventArgs args)
 {
     ScaleChanged?.Invoke(this, args);
 }
コード例 #13
0
ファイル: Actor.cs プロジェクト: StuMcCarthy/MovementGame
 public void RaiseScaleChanged(object sender, EventArgs e)
 {
     ScaleChanged?.Invoke(sender, e);
 }
コード例 #14
0
 private static void OnScaledChanged(int newScale)
 {
     ScaleChanged?.Invoke(null, newScale);
 }