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);
        }
Esempio n. 3
0
        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
        }