在wpf中grid1 中的内容有文字和图片。我需要循环更改grid1的内容并打印。
如果用PrintDialog.PrintVisual方法也可以,只是每次只能打印一张,打印机在每打一张时都要停顿一下,速度比连续打印慢了一半。下面的方法可以连续打印,但打印的很模糊,没法用。
怎么解决这个问题呢?谢谢啊! private void Button_Click_1(object sender, RoutedEventArgs e)
{
System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
pd.PrintPage += pd_PrintPage;
pd.Print();
} void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
// 更改 grid1 的内容
this.grid1.UpdateLayout(); RenderTargetBitmap bmp = new RenderTargetBitmap(794, 1123, 96d, 96d, PixelFormats.Default);
bmp.Render(this.grid1); BitmapEncoder be = new PngBitmapEncoder();
be.Frames.Add(BitmapFrame.Create(bmp)); System.IO.MemoryStream ms = new System.IO.MemoryStream();
be.Save(ms); System.Drawing.Image image1 = System.Drawing.Bitmap.FromStream(ms); e.Graphics.DrawImage(image1, new System.Drawing.Point(0, 0)); // 判断是否需要打印一下页(更改 grid1 的内容) }
如果用PrintDialog.PrintVisual方法也可以,只是每次只能打印一张,打印机在每打一张时都要停顿一下,速度比连续打印慢了一半。下面的方法可以连续打印,但打印的很模糊,没法用。
怎么解决这个问题呢?谢谢啊! private void Button_Click_1(object sender, RoutedEventArgs e)
{
System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
pd.PrintPage += pd_PrintPage;
pd.Print();
} void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
// 更改 grid1 的内容
this.grid1.UpdateLayout(); RenderTargetBitmap bmp = new RenderTargetBitmap(794, 1123, 96d, 96d, PixelFormats.Default);
bmp.Render(this.grid1); BitmapEncoder be = new PngBitmapEncoder();
be.Frames.Add(BitmapFrame.Create(bmp)); System.IO.MemoryStream ms = new System.IO.MemoryStream();
be.Save(ms); System.Drawing.Image image1 = System.Drawing.Bitmap.FromStream(ms); e.Graphics.DrawImage(image1, new System.Drawing.Point(0, 0)); // 判断是否需要打印一下页(更改 grid1 的内容) }
http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.printerresolution.aspx
用转换为图片再打印的方法,不输出到打印机,输出到xps文件,就很模糊。