Ejemplo n.º 1
0
        private static PrintCapabilities ScaleToFit1Page(ContentPresenter content,
            PrintDialog dlg, out double scale, double printScaleOffset)
        {
            var prCaps = dlg.PrintQueue.GetPrintCapabilities(dlg.PrintTicket);

            //get scale of the print wrt to screen of WPF visual
            scale = Math.Min(prCaps.PageImageableArea.ExtentWidth
                / content.ActualWidth, prCaps.PageImageableArea.ExtentHeight /
                    content.ActualHeight);

            scale += printScaleOffset;

            //Transform the Visual to scale
            content.LayoutTransform = new ScaleTransform(scale, scale);

            //get the size of the printer page
            Size sz = new Size(prCaps.PageImageableArea.ExtentWidth, prCaps.PageImageableArea.ExtentHeight);

            //update the layout of the visual to the printer page size.
            content.Measure(sz);
            content.Arrange(new Rect(new Point(prCaps.PageImageableArea.OriginWidth, prCaps.PageImageableArea.OriginHeight), sz));

            return prCaps;
        }
Ejemplo n.º 2
0
        private static void ResetVisualState(ContentPresenter objectToPrint, PrintCapabilities printCaps, bool wasVirtualized)
        {
            objectToPrint.Width = double.NaN;
            objectToPrint.UpdateLayout();
            objectToPrint.LayoutTransform = new ScaleTransform(1, 1);
            Size size = new Size(printCaps.PageImageableArea.ExtentWidth,
                                 printCaps.PageImageableArea.ExtentHeight);
            objectToPrint.Measure(size);
            objectToPrint.Arrange(new Rect(new Point(printCaps.PageImageableArea.OriginWidth,
                                  printCaps.PageImageableArea.OriginHeight), size));

            if (!wasVirtualized) return;
            var dg = objectToPrint.FindChild<DataGrid>();
            dg.EnableRowVirtualization = true;
            dg.EnableColumnVirtualization = true;
            VirtualizingPanel.SetIsVirtualizing(dg, true);
        }
Ejemplo n.º 3
0
        private void ArrangeCollapseElement(int idx, ContentPresenter element,
                        double panelCenterX, double panelCenterY,
                        double elementCenterX, double elementCenterY,
                        double destX, double destY)
        {
            element.Arrange(new Rect(destX, destY, element.DesiredSize.Width, element.DesiredSize.Height));

            var transGroup = element.RenderTransform as TransformGroup;
            Transform translateTransform, rotateTransform;
            if (transGroup == null)
            {
                element.RenderTransform = transGroup = new TransformGroup();
                translateTransform = new TranslateTransform();
                rotateTransform = new RotateTransform() { CenterX = elementCenterX, CenterY = elementCenterY };

                transGroup.Children.Add(translateTransform);
                transGroup.Children.Add(rotateTransform);
            }
            else
            {
                translateTransform = transGroup.Children[0] as TranslateTransform;
                rotateTransform = transGroup.Children[1] as RotateTransform;
            }
            element.RenderTransformOrigin = new Point(0.5, 0.5);

            //if (i != 0) continue;

            var aniDuration = AnimationDuration + TimeSpan.FromSeconds(AnimationDurationStep * idx);
            translateTransform.BeginAnimation(TranslateTransform.XProperty, new DoubleAnimation(0, panelCenterX - destX, aniDuration));
            translateTransform.BeginAnimation(TranslateTransform.YProperty, new DoubleAnimation(0, panelCenterY - destY, aniDuration));

            rotateTransform.BeginAnimation(RotateTransform.CenterXProperty, new DoubleAnimation(0, panelCenterX - destX, aniDuration));
            rotateTransform.BeginAnimation(RotateTransform.CenterYProperty, new DoubleAnimation(0, panelCenterY - destY, aniDuration));
            rotateTransform.BeginAnimation(RotateTransform.AngleProperty, new DoubleAnimation(0, -720, aniDuration));

            element.BeginAnimation(OpacityProperty, new DoubleAnimation(1, 0.2, aniDuration));
        }
Ejemplo n.º 4
0
 private void ArrangeInitialElement(ContentPresenter element, double panelCenterX, double panelCenterY)
 {
     element.Arrange(new Rect(panelCenterX, panelCenterY, element.DesiredSize.Width, element.DesiredSize.Height));
 }
Ejemplo n.º 5
0
 private static void ResetVisualState(ContentPresenter objectToPrint, PrintCapabilities printCaps)
 {
     objectToPrint.Width = double.NaN;
     objectToPrint.UpdateLayout();
     objectToPrint.LayoutTransform = new ScaleTransform(1, 1);
     Size size = new Size(printCaps.PageImageableArea.ExtentWidth,
                          printCaps.PageImageableArea.ExtentHeight);
     objectToPrint.Measure(size);
     objectToPrint.Arrange(new Rect(new Point(printCaps.PageImageableArea.OriginWidth,
                           printCaps.PageImageableArea.OriginHeight), size));
 }