diff --git a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml index 5ac6f7a..9247372 100644 --- a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml +++ b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml @@ -303,7 +303,6 @@ - @@ -363,10 +362,60 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StructureHelper/Services/Exports/ExportToFileInputData.cs b/StructureHelper/Services/Exports/ExportToFileInputData.cs index 951f612..51215e9 100644 --- a/StructureHelper/Services/Exports/ExportToFileInputData.cs +++ b/StructureHelper/Services/Exports/ExportToFileInputData.cs @@ -9,7 +9,7 @@ namespace StructureHelper.Services.Exports { internal class ExportToFileInputData : IExportToFileInputData { - public string FileName { get; set; } + public string FileName { get; set; } = "New file"; public string Filter { get; set; } public string Title { get; set; } } diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs index d6597ad..0bd9b3b 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs @@ -145,11 +145,12 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu } private void ExportToCSV() { - var inputData = new ExportToFileInputData(); - inputData.FileName = "New File"; - inputData.Filter = "csv |*.csv"; - inputData.Title = "Save in csv File"; - var logic = new ExportForceResultToCSVLogic(forcesResults); + var inputData = new ExportToFileInputData + { + Filter = "csv |*.csv", + Title = "Save in *.csv File" + }; + var logic = new ExportForcesResultToCSVLogic(forcesResults); var exportService = new ExportToFileService(inputData, logic); exportService.Export(); } diff --git a/StructureHelper/Windows/Graphs/ExportChartToCSVLogic.cs b/StructureHelper/Windows/Graphs/ExportChartToCSVLogic.cs new file mode 100644 index 0000000..a3e74ba --- /dev/null +++ b/StructureHelper/Windows/Graphs/ExportChartToCSVLogic.cs @@ -0,0 +1,61 @@ +using StructureHelperCommon.Models.Parameters; +using StructureHelperCommon.Services.ColorServices; +using StructureHelperLogics.NdmCalculations.Analyses; +using System; +using System.Collections.Generic; +using System.Diagnostics.Metrics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Windows.Graphs +{ + public class ExportChartToCSVLogic : ExportToCSVLogicBase + { + private List series; + + public ExportChartToCSVLogic(IEnumerable series) + { + this.series = series.ToList(); + } + + public override void ExportBoby() + { + foreach (var ser in series) + { + output.AppendLine(string.Join(separator, ser.Name)); + var arrayParameter = ser.ArrayParameter; + output.AppendLine(string.Join(separator, arrayParameter.ColumnLabels)); + var data = arrayParameter.Data; + int columnCount = data.GetLength(1); + int rowCount = data.GetLength(0); + for (int j = 0; j < rowCount; j++) + { + string[] values = new string[columnCount]; + for (int i = 0; i < columnCount; i++) + { + values[i] = data[j, i].ToString(); + } + output.AppendLine(string.Join(separator, values)); + } + + } + } + + public override void ExportHeadings() + { + //int headerCount = series.Sum(x => x.YItems.CollectionItems.Count); + //string[] headings = new string[headerCount]; + //int counter = 0; + //foreach (var ser in series) + //{ + // foreach (var serCollection in ser.YItems.CollectionItems) + // { + // headings[counter] = serCollection.Item.Name; + // counter++; + // } + //} + //output.AppendLine(string.Join(separator, headings)); + } + } +} diff --git a/StructureHelper/Windows/Graphs/FrameWorkElementServiseLogic.cs b/StructureHelper/Windows/Graphs/FrameWorkElementServiseLogic.cs new file mode 100644 index 0000000..ecd2a6b --- /dev/null +++ b/StructureHelper/Windows/Graphs/FrameWorkElementServiseLogic.cs @@ -0,0 +1,49 @@ +using StructureHelper.Services.Exports; +using StructureHelperLogics.NdmCalculations.Analyses; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media.Imaging; +using System.Windows.Media; + +namespace StructureHelper.Windows.Graphs +{ + public class FrameWorkElementServiseLogic : IFrameWorkElementServiseLogic + { + public void SaveImageToFile(FrameworkElement element) + { + var inputData = new ExportToFileInputData + { + Filter = "png |*.png", + Title = "Save in *.png File" + }; + var logic = new ExportFrameWorkElementLogic(element); + var exportService = new ExportToFileService(inputData, logic); + exportService.Export(); + } + + public void CopyImageToClipboard(FrameworkElement element) + { + if (element == null) return; + + // Measure and arrange the element to ensure it's fully rendered + element.Measure(new Size(element.ActualWidth, element.ActualHeight)); + element.Arrange(new Rect(new Size(element.ActualWidth, element.ActualHeight))); + + // Render the element to a RenderTargetBitmap + var renderTarget = new RenderTargetBitmap( + (int)element.ActualWidth, + (int)element.ActualHeight, + 96, // DPI X + 96, // DPI Y + PixelFormats.Pbgra32); + + renderTarget.Render(element); + + Clipboard.SetImage(renderTarget); + } + } +} diff --git a/StructureHelper/Windows/Graphs/GraphView.xaml b/StructureHelper/Windows/Graphs/GraphView.xaml index 47b4c2d..30d6b78 100644 --- a/StructureHelper/Windows/Graphs/GraphView.xaml +++ b/StructureHelper/Windows/Graphs/GraphView.xaml @@ -23,6 +23,26 @@ + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -