Exemplo n.º 1
0
 public virtual void OnRequestSave3DImage(object sender, ImageSaveEventArgs e)
 {
     if (RequestSave3DImage != null)
     {
         RequestSave3DImage(this, e);
     }
 }
Exemplo n.º 2
0
 public virtual void OnRequestSaveImage(Object sender, ImageSaveEventArgs e)
 {
     if (RequestSaveImage != null)
     {
         RequestSaveImage(this, e);
     }
 }
Exemplo n.º 3
0
        void DynamoViewModelRequestSaveImage(object sender, ImageSaveEventArgs e)
        {
            if (string.IsNullOrEmpty(e.Path))
                return;

            var workspace = dynamoViewModel.Model.CurrentWorkspace;
            if (workspace == null)
                return;

            if (!workspace.Nodes.Any() && (!workspace.Notes.Any()))
                return; // An empty graph.

            var initialized = false;
            var bounds = new Rect();

            var dragCanvas = WpfUtilities.ChildOfType<DragCanvas>(this);
            var childrenCount = VisualTreeHelper.GetChildrenCount(dragCanvas);
            for (int index = 0; index < childrenCount; ++index)
            {
                var child = VisualTreeHelper.GetChild(dragCanvas, index);
                var firstChild = VisualTreeHelper.GetChild(child, 0);
                if ((!(firstChild is NodeView)) && (!(firstChild is NoteView)))
                    continue;

                var childBounds = VisualTreeHelper.GetDescendantBounds(child as Visual);
                childBounds.X = (double)(child as Visual).GetValue(Canvas.LeftProperty);
                childBounds.Y = (double)(child as Visual).GetValue(Canvas.TopProperty);

                if (initialized)
                    bounds.Union(childBounds);
                else
                {
                    initialized = true;
                    bounds = childBounds;
                }
            }

            // Add padding to the edge and make them multiples of two.
            bounds.Width = (((int)Math.Ceiling(bounds.Width)) + 1) & ~0x01;
            bounds.Height = (((int)Math.Ceiling(bounds.Height)) + 1) & ~0x01;

            var drawingVisual = new DrawingVisual();
            using (var drawingContext = drawingVisual.RenderOpen())
            {
                var targetRect = new Rect(0, 0, bounds.Width, bounds.Height);
                var visualBrush = new VisualBrush(dragCanvas);
                drawingContext.DrawRectangle(visualBrush, null, targetRect);

                // drawingContext.DrawRectangle(null, new Pen(Brushes.Blue, 1.0), childBounds);
            }

            // var m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice;
            // region.Scale(m.M11, m.M22);

            var rtb = new RenderTargetBitmap(((int)bounds.Width),
                ((int)bounds.Height), 96, 96, PixelFormats.Default);

            rtb.Render(drawingVisual);

            //endcode as PNG
            var pngEncoder = new PngBitmapEncoder();
            pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

            try
            {
                using (var stm = File.Create(e.Path))
                {
                    pngEncoder.Save(stm);
                }
            }
            catch
            {
                dynamoViewModel.Model.Logger.Log(Wpf.Properties.Resources.MessageFailedToSaveAsImage);
            }
        }
Exemplo n.º 4
0
        //void PackageManagerClient_RequestSetLoginState(object sender, LoginStateEventArgs e)
        //{
        //    PackageManagerLoginState.Text = e.Text;
        //    PackageManagerLoginButton.IsEnabled = e.Enabled;
        //}

        void _vm_RequestSaveImage(object sender, ImageSaveEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Path))
            {
                //var bench = dynSettings.Bench;

                //if (bench == null)
                //{
                //    DynamoLogger.Instance.Log("Cannot export bench as image without UI.  No image wil be exported.");
                //    return;
                //}

                var control = WPF.FindChild<DragCanvas>(this, null);

                double width = 1;
                double height = 1;

                // connectors are most often within the bounding box of the nodes and notes

                foreach (NodeModel n in dynSettings.Controller.DynamoModel.CurrentWorkspace.Nodes)
                {
                    width = Math.Max(n.X + n.Width, width);
                    height = Math.Max(n.Y + n.Height, height);
                }

                foreach (NoteModel n in dynSettings.Controller.DynamoModel.CurrentWorkspace.Notes)
                {
                    width = Math.Max(n.X + n.Width, width);
                    height = Math.Max(n.Y + n.Height, height);
                }

                var rtb = new RenderTargetBitmap(Math.Max(1, (int)width),
                                                  Math.Max(1, (int)height),
                                                  96,
                                                  96,
                                                  System.Windows.Media.PixelFormats.Default);

                rtb.Render(control);

                //endcode as PNG
                var pngEncoder = new PngBitmapEncoder();
                pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

                try
                {
                    using (var stm = File.Create(e.Path))
                    {
                        pngEncoder.Save(stm);
                    }
                }
                catch
                {
                    DynamoLogger.Instance.Log("Failed to save the Workspace an image.");
                }
            }
        }
Exemplo n.º 5
0
        private void DynamoViewModelRequestSave3DImage(object sender, ImageSaveEventArgs e)
        {
            var canvas = (DPFCanvas)BackgroundPreview.View.RenderHost;

            var encoder = new PngBitmapEncoder();
            var rtBitmap = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96,
                PixelFormats.Pbgra32);
            rtBitmap.Render(canvas);

            encoder.Frames.Add(BitmapFrame.Create(rtBitmap));

            if (File.Exists(e.Path))
            {
                File.Delete(e.Path);
            }

            using (var stream = File.Create(e.Path))
            {
                encoder.Save(stream);
            }
        }
Exemplo n.º 6
0
 private void DynamoViewModelRequestSaveImage(object sender, ImageSaveEventArgs e)
 {
     var workspace = this.ChildOfType<WorkspaceView>();
     workspace.SaveWorkspaceAsImage(e.Path);
 }
Exemplo n.º 7
0
        void DynamoViewModelRequestSaveImage(object sender, ImageSaveEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Path))
            {
                var control = WpfUtilities.ChildOfType<ZoomBorder>(this, "zoomBorder");

                double width = 1;
                double height = 1;

                // connectors are most often within the bounding box of the nodes and notes

                foreach (NodeModel n in dynamoViewModel.Model.CurrentWorkspace.Nodes)
                {
                    width = Math.Max(n.X + n.Width, width);
                    height = Math.Max(n.Y + n.Height, height);
                }

                foreach (NoteModel n in dynamoViewModel.Model.CurrentWorkspace.Notes)
                {
                    width = Math.Max(n.X + n.Width, width);
                    height = Math.Max(n.Y + n.Height, height);
                }

                var rtb = new RenderTargetBitmap(Math.Max((int)control.ActualWidth, (int)width),
                                                  Math.Max((int)control.ActualHeight, (int)height),
                                                  96,
                                                  96,
                                                  PixelFormats.Default);

                rtb.Render(control);

                //endcode as PNG
                var pngEncoder = new PngBitmapEncoder();
                pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

                try
                {
                    using (var stm = File.Create(e.Path))
                    {
                        pngEncoder.Save(stm);
                    }
                }
                catch
                {
                    dynamoViewModel.Model.Logger.Log(Wpf.Properties.Resources.MessageFailedToSaveAsImage);
                }
            }
        }