Exemplo n.º 1
0
 public void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
 {
     if (PropertyChanged != null)
     {
         WPFUtils.ExecuteOnUiThreadInvoke(() => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)),
                                          DispatcherPriority.Normal, propertyName);
     }
 }
Exemplo n.º 2
0
        public void AnimateToPoint(Point start, Point destination, Action postAction = null)
        {
            _isAnimating = true;
            MagnifierCircle.Visibility      = Visibility.Visible;
            MagnifierInnerCircle.Visibility = Visibility.Visible;

            Task task = Task.Factory.StartNew(() =>
            {
                Vector delta = destination - start;

                if (delta.Length <= ANIM_THRESHOLD)
                {
                    WPFUtils.ExecuteOnUiThreadInvoke(() => SetPosition(destination));
                }
                else //animate
                {
                    double iterationCount = Math.Ceiling(delta.Length / ANIM_THRESHOLD); // every N points with 10 msec interval

                    double deltaX = delta.X / iterationCount;
                    double deltaY = delta.Y / iterationCount;

                    for (int i = 0; i < iterationCount; i++)
                    {
                        Point pos1 = new Point(start.X + i * deltaX, start.Y + i * deltaY);
                        WPFUtils.ExecuteOnUiThreadInvoke(() => SetPosition(pos1));
                        Thread.Sleep(20);
                    }
                }

                _isAnimating = false;

                if (postAction != null)
                {
                    postAction();
                }
            });
        }