在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 的内容)        }

解决方案 »

  1.   

    设置下分辨率看看
    http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.printerresolution.aspx
      

  2.   

    与打印机的分辨率没关系吧,我用PrintDialog.PrintVisual方法打开,效果非常好!
    用转换为图片再打印的方法,不输出到打印机,输出到xps文件,就很模糊。
      

  3.   

    在控制面板打印机中设置下xps打印机的分辨率。