private BitmapSource RenderPreview(PreviewKind kind) { bool wasPreviewing = Settings.Default.Preview_AnimationToggle; Settings.Default.Preview_AnimationToggle = false; BitmapSource bmp; switch (kind) { case PreviewKind.Top: { bmp = RenderVisual(pre_TopScreen, 96, 96); break; } case PreviewKind.Bottom: { bmp = RenderVisual(pre_BottomScreen, 96, 96); break; } case PreviewKind.Both: { var topBmp = RenderVisual(pre_TopScreen, 96, 96); var botBmp = RenderVisual(pre_BottomScreen, 96, 96); DrawingVisual drawingVisual = new DrawingVisual(); using (DrawingContext drawingContext = drawingVisual.RenderOpen()) { var noiseBrush = FindResource("NoiseBackground") as Brush; drawingContext.DrawRectangle(noiseBrush, null, new Rect(0, 0, 412, 480)); drawingContext.DrawImage(topBmp, new Rect(0, 0, 412, 240)); const int X_OFF = (412 - 320) / 2; drawingContext.DrawImage(botBmp, new Rect(X_OFF, 240, 320, 240)); } var rtbmp = new RenderTargetBitmap(412, 480, 96, 96, PixelFormats.Pbgra32); rtbmp.Render(drawingVisual); bmp = rtbmp; break; } default: return(null); } Settings.Default.Preview_AnimationToggle = wasPreviewing; bmp.Freeze(); return(bmp); }
private void ExportPreview_Execute(PreviewKind previewKind) { var svfl = new SaveFileDialog { Filter = "PNG Image|*.png", }; switch (previewKind) { case PreviewKind.Top: svfl.FileName = "preview_top"; break; case PreviewKind.Bottom: svfl.FileName = "preview_bottom"; break; case PreviewKind.Both: svfl.FileName = "preview"; break; } var dlg = svfl.ShowDialog(); if (dlg.HasValue && !dlg.Value) { return; } var outPath = svfl.FileName; var rendered = RenderPreview(previewKind); if (rendered == null) { return; } var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(rendered)); using (var fs = File.Open(outPath, FileMode.Create)) encoder.Save(fs); MessageBox.Show(MainResources.Message_PreviewSaved, WINDOW_TITLE, MessageBoxButton.OK, MessageBoxImage.Information); }
private BitmapSource RenderPreview(PreviewKind kind) { bool wasPreviewing = Settings.Default.Preview_AnimationToggle; Settings.Default.Preview_AnimationToggle = false; BitmapSource bmp; switch (kind) { case PreviewKind.Top: { bmp = RenderVisual(pre_TopScreen, 96, 96); break; } case PreviewKind.Bottom: { bmp = RenderVisual(pre_BottomScreen, 96, 96); break; } case PreviewKind.Both: { var topBmp = RenderVisual(pre_TopScreen, 96, 96); var botBmp = RenderVisual(pre_BottomScreen, 96, 96); DrawingVisual drawingVisual = new DrawingVisual(); using (DrawingContext drawingContext = drawingVisual.RenderOpen()) { var noiseBrush = FindResource("NoiseBackground") as Brush; drawingContext.DrawRectangle(noiseBrush, null, new Rect(0, 0, 412, 480)); drawingContext.DrawImage(topBmp, new Rect(0, 0, 412, 240)); const int X_OFF = (412 - 320) / 2; drawingContext.DrawImage(botBmp, new Rect(X_OFF, 240, 320, 240)); } var rtbmp = new RenderTargetBitmap(412, 480, 96, 96, PixelFormats.Pbgra32); rtbmp.Render(drawingVisual); bmp = rtbmp; break; } default: return null; } Settings.Default.Preview_AnimationToggle = wasPreviewing; bmp.Freeze(); return bmp; }
private void ExportPreview_Execute(PreviewKind previewKind) { var svfl = new SaveFileDialog { Filter = "PNG Image|*.png", }; switch (previewKind) { case PreviewKind.Top: svfl.FileName = "preview_top"; break; case PreviewKind.Bottom: svfl.FileName = "preview_bottom"; break; case PreviewKind.Both: svfl.FileName = "preview"; break; } var dlg = svfl.ShowDialog(); if (dlg.HasValue && !dlg.Value) return; var outPath = svfl.FileName; var rendered = RenderPreview(previewKind); if (rendered == null) return; var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(rendered)); using (var fs = File.Open(outPath, FileMode.Create)) encoder.Save(fs); MessageBox.Show(MainResources.Message_PreviewSaved, WINDOW_TITLE, MessageBoxButton.OK, MessageBoxImage.Information); }