进来搞Window打印,发现还是很好弄的,就是在PrintDocument上画,跟在Canvas画一样,要什么样子就画什么样子,先上示例代码
private void button1_Click(object sender, RoutedEventArgs e){var printDocument = new PrintDocument();//指定打印机printDocument.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";//设置页边距printDocument.PrinterSettings.DefaultPageSettings.Margins.Left = 0;printDocument.PrinterSettings.DefaultPageSettings.Margins.Top = 0;printDocument.PrinterSettings.DefaultPageSettings.Margins.Right = 0;printDocument.PrinterSettings.DefaultPageSettings.Margins.Bottom = 0;//设置尺寸大小,如不设置默认是A4纸//A4纸的尺寸是210mm×297mm,//当你设定的分辨率是72像素/英寸时,A4纸的尺寸的图像的像素是595×842//当你设定的分辨率是150像素/英寸时,A4纸的尺寸的图像的像素是1240×1754//当你设定的分辨率是300像素/英寸时,A4纸的尺寸的图像的像素是2479×3508,printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 595, 842);printDocument.PrintPage += new PrintPageEventHandler(printDocument_PrintPage);try{printDocument.Print();}catch (InvalidPrinterException){}finally{printDocument.Dispose();}}//打印方法void printDocument_PrintPage(object sender, PrintPageEventArgs e){var printContent ="打印测试";var printFont = new Font("宋体", 12, System.Drawing.FontStyle.Regular);var printColor = System.Drawing.Brushes.Black;var pointY = 10f;//画字符串e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY);//如何打印带粗体,倾斜,字体中带横线,下划线的字符串,设置字体的FontStyle(粗体,倾斜,字体中带横线,下划线)printFont = new Font("宋体", 12, System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic);e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY += 20f);printFont = new Font("宋体", 12, System.Drawing.FontStyle.Regular);//画图像//e.Graphics.DrawImage(Image, 10, 50);//设置坐标系缩放//设置打印坐标系X值为原值的0.6倍打印e.Graphics.ScaleTransform(0.6f, 1.0f);e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY += 20f);//恢复坐标系缩放e.Graphics.ScaleTransform(1 / 0.6f, 1.0f);e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY += 20f);//绘画的设置保存与恢复var status = e.Graphics.Save();e.Graphics.ScaleTransform(0.6f, 1.0f);e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY += 20f);e.Graphics.Restore(status);e.Graphics.DrawString(printContent, printFont, printColor, 10f, pointY += 20f);//如果打印还有下一页,将HasMorePages值置为true;e.HasMorePages = false;}