private void ZoomIn(StatisticsItemUserControl clickChart) { clickChart.IsZoomed = true; isChartZoomed = true; DoubleAnimation da = new DoubleAnimation(0, TimeSpan.FromMilliseconds(500).Duration()); this.ChartGridOverview.BeginAnimation(Grid.OpacityProperty, da); lastZoomedIndex = this.ChartGridOverview.Children.IndexOf(clickChart); this.ChartGridOverview.Children.Remove(clickChart); this.ChartGridOverview.Children.Insert(lastZoomedIndex, new Grid()); // Platzhalter gridZoomChart.Children.Add(clickChart); Point pt = clickChart.PointToScreen(new Point(0, 0)); Point pt1 = MainGrid.PointFromScreen(pt); Point ptSize = clickChart.PointToScreen(new Point(clickChart.ActualWidth, clickChart.ActualHeight)); Point ptSize1 = MainGrid.PointFromScreen(ptSize); ThicknessAnimation marginAnim = new ThicknessAnimation(); marginAnim.From = new Thickness(pt1.X, pt1.Y, MainGrid.ActualWidth - ptSize1.X, MainGrid.ActualHeight - ptSize1.Y); marginAnim.To = new Thickness(0); marginAnim.Duration = TimeSpan.FromMilliseconds(500).Duration(); marginAnim.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }; clickChart.BeginAnimation(Grid.MarginProperty, marginAnim); }
private void ZoomOut(StatisticsItemUserControl clickChart) { clickChart.IsZoomed = false; isChartZoomed = false; DoubleAnimation da = new DoubleAnimation(1, TimeSpan.FromMilliseconds(500).Duration()); this.ChartGridOverview.BeginAnimation(Grid.OpacityProperty, da); Grid placeholderGrid = this.ChartGridOverview.Children[lastZoomedIndex] as Grid; Point pt = placeholderGrid.PointToScreen(new Point(0, 0)); Point pt1 = MainGrid.PointFromScreen(pt); Point ptSize = placeholderGrid.PointToScreen(new Point(placeholderGrid.ActualWidth, placeholderGrid.ActualHeight)); Point ptSize1 = MainGrid.PointFromScreen(ptSize); ThicknessAnimation marginAnim = new ThicknessAnimation(); marginAnim.From = new Thickness(0); marginAnim.To = new Thickness(pt1.X, pt1.Y, MainGrid.ActualWidth - ptSize1.X, MainGrid.ActualHeight - ptSize1.Y); marginAnim.Duration = TimeSpan.FromMilliseconds(500).Duration(); marginAnim.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }; marginAnim.Completed += new EventHandler(marginAnim_Completed); clickChart.BeginAnimation(Grid.MarginProperty, marginAnim); }
private IntPtr WndProcHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handeled) { if (msg != 0x0084) { return(IntPtr.Zero); // WM_NCHITTEST } handeled = true; var x = lParam.ToInt32() & 0x0000FFFF; var y = (int)((lParam.ToInt32() & 0xFFFF0000) >> 16); var pos = new Point(x, y); var relativePos = MainGrid.PointFromScreen(pos); if (Height - relativePos.Y < 15 && Width - relativePos.X < 15) { return((IntPtr)17); // HTBOTTOMRIGHT } if (Height - relativePos.Y < 5) { return((IntPtr)15); // HTBOTTOM } if (Width - relativePos.X < 5) { return((IntPtr)11); // HTRIGHT } if (relativePos.Y < 50) { return((IntPtr)2); // HTCAPTION } return((IntPtr)1); // HTCLIENT }