Skip to content

Commit 5ccdeee

Browse files
committed
export to image
1 parent 249d0e5 commit 5ccdeee

3 files changed

Lines changed: 22 additions & 18 deletions

File tree

SimpleStateMachineNodeEditor/View/MainWindow.xaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
<MenuItem Header="File" x:Name="Item" Style="{DynamicResource MenuItemStyle}">
2121
<MenuItem Header="Open" x:Name="ItemOpen" Style="{DynamicResource MenuItemStyle}"/>
2222
<MenuItem Header="Save" x:Name="ItemSave" Style="{DynamicResource MenuItemStyle}"/>
23-
<MenuItem Header="SaveAs..." x:Name="ItemSaveAs" Style="{DynamicResource MenuItemStyle}">
24-
<MenuItem Header="PNG" x:Name="ItemSaveAsPNG" Style="{DynamicResource MenuItemStyle}"/>
25-
<MenuItem Header="JPEG" x:Name="ItemSaveAsJPEG" Style="{DynamicResource MenuItemStyle}"/>
23+
<MenuItem Header="SaveAs..." x:Name="ItemSaveAs" Style="{DynamicResource MenuItemStyle}"/>
24+
<MenuItem Header="Export" x:Name="ItemExport" Style="{DynamicResource MenuItemStyle}">
25+
<MenuItem Header="Export to PNG" x:Name="ItemExportToPNG" Style="{DynamicResource MenuItemStyle}"/>
26+
<MenuItem Header="Export to JPEG" x:Name="ItemExportToJPEG" Style="{DynamicResource MenuItemStyle}"/>
2627
</MenuItem>
2728
<MenuItem Header="Exit" x:Name="ItemExit" Style="{DynamicResource MenuItemStyle}"/>
2829
</MenuItem>

SimpleStateMachineNodeEditor/View/MainWindow.xaml.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ private void SetupEvents()
7676
this.ButtonClose.Events().Click.Subscribe(e => ButtonCloseClick(e)).DisposeWith(disposable);
7777
this.ButtonMin.Events().Click.Subscribe(e => ButtonMinClick(e)).DisposeWith(disposable);
7878
this.ButtonMax.Events().Click.Subscribe(e => ButtonMaxClick(e)).DisposeWith(disposable);
79-
this.ItemSaveAsPNG.Events().Click.Subscribe(_ => SaveAsPNG()).DisposeWith(disposable);
79+
this.ItemExportToJPEG.Events().Click.Subscribe(_ => SaveAsPNG(ImageFormats.PNG)).DisposeWith(disposable);
80+
this.ItemExportToPNG.Events().Click.Subscribe(_ => SaveAsPNG(ImageFormats.JPEG)).DisposeWith(disposable);
8081
});
8182
}
8283

@@ -129,18 +130,17 @@ private void HeaderClick(MouseButtonEventArgs e)
129130
}
130131
}
131132

132-
void SaveAsPNG()
133+
void SaveAsPNG(ImageFormats format)
133134
{
134-
//// Configure open file dialog box
135-
//OpenFileDialog dlg = new OpenFileDialog();
136-
//dlg.FileName = "Document"; // Default file name
137-
//dlg.DefaultExt = ".png"; // Default file extension
138-
////dlg.Filter = Filter
139-
140-
//// Show open file dialog box
141-
//DialogResult dialogResult = dlg.ShowDialog();
142-
//var t = 5;
143-
//this.NodesCanvas.SaveCanvasToImage()ж
135+
SaveFileDialog dlg = new SaveFileDialog();
136+
dlg.FileName = "SimpleStateMachine";
137+
dlg.Filter = (format == ImageFormats.JPEG)? "JPEG Image (.jpeg)|*.jpeg":"Png Image (.png)|*.png";
138+
139+
DialogResult dialogResult = dlg.ShowDialog();
140+
if(dialogResult==System.Windows.Forms.DialogResult.OK)
141+
{
142+
this.NodesCanvas.SaveCanvasToImage(dlg.FileName, format);
143+
}
144144
}
145145

146146
#endregion SetupEvents

SimpleStateMachineNodeEditor/View/ViewNodesCanvas.xaml.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,13 @@ private MyPoint GetDeltaDragOver(DragEventArgs e)
270270

271271
public void SaveCanvasToImage(string filename, ImageFormats format)
272272
{
273-
RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)this.Canvas.Width, (int)this.Canvas.Height, 96d, 96d, PixelFormats.Pbgra32);
273+
int width = (int)this.Canvas.ActualWidth;
274+
int height = (int)this.Canvas.ActualHeight;
275+
276+
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
274277
// needed otherwise the image output is black
275-
this.Canvas.Measure(new Size((int)this.Canvas.Width, (int)this.Canvas.Height));
276-
this.Canvas.Arrange(new Rect(new Size((int)this.Canvas.Width, (int)this.Canvas.Height)));
278+
this.Canvas.Measure(new Size(width, height));
279+
this.Canvas.Arrange(new Rect(new Size(width, height)));
277280

278281
renderBitmap.Render(this.Canvas);
279282
BitmapEncoder encoder;

0 commit comments

Comments
 (0)