private void DependenciesModelChangedHandler(object sender, EventArgs e) { try { var graph = GraphVizHelper.CreateDependencyGraph(this.DependenciesService.DependenciesModel, Properties.Settings.Default.maxLineLength); IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath); using (Stream fileStream = File.Create(this.ImagePath)) { Task.Run(async() => { await renderer.RunAsync(graph, fileStream, RendererLayouts.Dot, RendererFormats.Png, CancellationToken.None); }).Wait(); } } catch (Exception ex) { this.Logger.Error(string.Format(@"Got an error while trying to generate the image '{0}'", this.ImagePath)); this.Logger.Debug(ex.StackTrace); } }
private void ExecuteRenderAndDownloadDependenciesAsImage(string fileType) { var graph = GraphVizHelper.CreateDependencyGraph(this.currentConnectorViewModel.DependenciesService.DependenciesModel, Properties.Settings.Default.maxLineLength); SaveFileDialog saveFileDialog1 = new SaveFileDialog(); //saveFileDialog1.Filter = "Png Image|*.png|Svg Image|*.svg"; saveFileDialog1.Filter = (fileType == "png" ? "Png Image|*.png" : "Svg Image|*.svg"); saveFileDialog1.Title = "Save dependencies as... (image)"; bool?result = saveFileDialog1.ShowDialog(); if (result == true && !string.IsNullOrWhiteSpace(saveFileDialog1.FileName)) { IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath); using (Stream fileStream = File.Create(saveFileDialog1.FileName)) { Task.Run(async() => { await renderer.RunAsync(graph, fileStream, RendererLayouts.Dot, (fileType == "png" ? RendererFormats.Png : RendererFormats.Svg), CancellationToken.None); }).Wait(); } } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null && value is Dictionary <int, DependencyItem> ) { var graph = GraphVizHelper.CreateDependencyGraph((Dictionary <int, DependencyItem>)value, Properties.Settings.Default.maxLineLength); using (MemoryStream memStream = new MemoryStream()) { IRenderer renderer = new Renderer(Properties.Settings.Default.graphvizPath); // We wait synchronously for the memStream to be filled up Task.Run(async() => { await renderer.RunAsync(graph, memStream, RendererLayouts.Dot, RendererFormats.Png, CancellationToken.None); }).Wait(); BitmapImage img = new BitmapImage(); img.BeginInit(); img.CacheOption = BitmapCacheOption.OnLoad; img.StreamSource = memStream; img.EndInit(); return(img); } } return(null); }