EasyHero Ответов: 1

Как распечатать изображение с помощью термопринтера в WPF


Привет,я хочу распечатать изображение с помощью термопринтера IPI.

Что я уже пробовал:

Я использовал элемент управления canvas для упорядочения информации, которую я хочу напечатать на бумаге, и я захватил элемент управления canvas и преобразовал его в Источник изображения, используя приведенный ниже код
//get the canvas as image source
                Canvas ck = new Canvas();
                Rect rect = new Rect(canvas.RenderSize);
                RenderTargetBitmap rtb = new RenderTargetBitmap((int)canvas.RenderSize.Width * 2, (int)canvas.RenderSize.Height * 2, 96d, 96d, System.Windows.Media.PixelFormats.Default);
                rtb.Render(canvas);

                //endcode as PNG
                BitmapEncoder pngEncoder = new PngBitmapEncoder();
                pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

                //save to memory stream
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                pngEncoder.Save(ms);

                var imageSource = new BitmapImage();
                imageSource.BeginInit();
                imageSource.StreamSource = ms;
                imageSource.EndInit();


я создал экземпляр printdialog и передал ему изображение, используя следующий код
//print
                System.Windows.Controls.PrintDialog dlg = new System.Windows.Controls.PrintDialog();

                if (dlg.ShowDialog() == true)
                {
                    System.Windows.Size printSize = new
                    System.Windows.Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight);

                    System.Windows.Controls.Image img = new System.Windows.Controls.Image();

                    img.Source = imageSource;
                    img.Stretch = Stretch.UniformToFill;
                    img.Margin = new Thickness(48);

                    dlg.PrintVisual(img, "Account Opening Details");
                }


это открывает окно printdialog, но не запускает принтер после нажатия кнопки печать. как будто принтер не катится и не работает. Я напечатал тестовую страницу на принтере, и это сработало. Отпечатано было отлично. Поэтому я создал экземпляр печатного документа, похожего на этот
PrintDocument dd = new PrintDocument();

но как передать изображение в печатный документ перед вызовом
dd.Print()
функция?

1 Ответов

Рейтинг:
11

OriginalGriff

Вы можете посмотреть здесь: Передача параметров в PrintDocument.Событие PrintPage[^]