void MainPage_Loaded(object sender, RoutedEventArgs e) { Loaded -= MainPage_Loaded; CompositionTarget.Rendering += _Render; Items = new List <RoundedSquare>(); for (var i = 0; i < 25; i++) { var item = new RoundedSquare { CacheMode = new BitmapCache(), Width = 80, Height = 80 }; item.NormalizeTransformGroup(); item.RenderTransformOrigin = new Point(.5, .5); item.MouseLeftButtonDown += ItemMouseLeftButtonDown; Items.Add(item); canvas.Children.Add(item); } // Hide the options stackOptions.AutoAlphaCollapsedTo(0); gridOptions.AutoAlphaCollapsedTo(0); pileOptions.AutoAlphaCollapsedTo(0); SetView(Views.Pile); }
private void PileNav(RoundedSquare selectedItem) { var selectedProjection = selectedItem.Projection as PlaneProjection; var selectedPos = selectedItem.Position; if (selectedProjection == null) { return; } foreach (var item in Items) { var currentProjection = Helper.Copy(item.Projection as PlaneProjection); currentProjection.LocalOffsetZ -= selectedProjection.LocalOffsetZ; currentProjection.LocalOffsetX -= selectedProjection.LocalOffsetX; currentProjection.LocalOffsetY -= selectedProjection.LocalOffsetY; var newPos = new Point(item.Position.X - selectedPos.X + CenterX, item.Position.Y - selectedPos.Y + CenterY); ArtefactAnimator.AddEase(item, RoundedSquare.PositionProperty, newPos, .6, AnimationTransitions.CubicEaseOut, 0); ArtefactAnimator.AddEase(item, ProjectionProperty, currentProjection, 1, AnimationTransitions.CubicEaseIn, 0).Update += (eo, p) => { var target = (FrameworkElement)eo.Target; var pp = target.Projection as PlaneProjection; // set blur based on z-depth if (pp == null) { return; } target.Effect = new BlurEffect { Radius = -pp.LocalOffsetZ / 50 }; target.Opacity = pp.LocalOffsetZ < 200 ? 1 : 1 - (Math.Min(pp.LocalOffsetZ - 200, 500) / 500); }; } }