private void ExportButton_Click(object sender, RoutedEventArgs e) { if (TreeTop.Figures.Count != 0) { SaveFileDialog sfd = new SaveFileDialog { Title = "Сохранить как", OverwritePrompt = true, CheckPathExists = true, Filter = "Files(*.png)|*.png" }; sfd.ShowDialog(); if (sfd.FileName != "") { MyCanvas.Measure(new Size((int)MyCanvas.Width, (int)MyCanvas.Height)); MyCanvas.Arrange(new Rect(new Size((int)MyCanvas.Width, (int)MyCanvas.Height))); var rtb = new RenderTargetBitmap((int)MyCanvas.Width, (int)MyCanvas.Height, 96d, 96d, PixelFormats.Pbgra32); rtb.Render(MyCanvas); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(rtb)); FileStream file = (FileStream)sfd.OpenFile(); png.Save(file); file.Close(); } } else { System.Windows.MessageBox.Show("Нарисуйте что-нибудь..."); } }
private void Print_Click(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { // Скрыть Grid grid.Visibility = Visibility.Hidden; MContext mc = new MContext(); Subcategory sub = mc.Subcategories.First(x => x.ID == s.ID_Subcategory); PriceFormat pf = mc.PriceFormat.First(x => x.ID == sub.ID_PriceFormat); // Увеличить размер в 5 раз MyCanvas.LayoutTransform = new ScaleTransform(pf.TransX, pf.TransY); // Определить поля int pageMargin = pf.Margin; // Получить размер страницы System.Windows.Size pageSize = new System.Windows.Size(pf.X, pf.Y); // Инициировать установку размера элемента MyCanvas.Measure(pageSize); MyCanvas.Arrange(new Rect(pageMargin, pageMargin, pageSize.Width, pageSize.Height)); // Напечатать элемент printDialog.PrintVisual(MyCanvas, "Распечатываем элемент Canvas"); // Удалить трансформацию и снова сделать элемент видимым MyCanvas.LayoutTransform = null; grid.Visibility = Visibility.Visible; if (s.TotalPrice != 0) { SKU stmp = mc.SKUs.First(x => x.ID == s.ID); stmp.Price = s.TotalPrice; stmp.TotalPrice = 0; stmp.Promo = s.TotalPromo; stmp.ChangePrice = false; mc.SaveChanges(); } } this.Close(); }