方式一:
public bool Print(string pathStr)
{
try
{
if (File.Exists(pathStr) == false)
return false; var pr = new Process
{
StartInfo =
{
FileName = pathStr,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
Verb = "Print"//printo、edit、open
//printto 调用默认打印机打印
//open 打开图片
}
};
pr.Start();
return true;
}
catch (Exception)
{
return false;
}
}
//等价于==》 private void PrintImage(string filePath)
{
  Process process = new Process();

   process.StartInfo.FileName ="filePath";

   string[] items=process.StartInfo.Verbs;
   process.StartInfo.Verb = "printto";
   process.StartInfo.CreateNoWindow = true;
   process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
   process.Start();

}
private void SaveWindowToImage(Window window, string fileName)
{
FrameworkElement element = window.Content as FrameworkElement;
RenderTargetBitmap bmp = new RenderTargetBitmap((int)element.ActualWidth,
(int)element.ActualHeight, 96d, 96d, PixelFormats.Default);
bmp.Render(window); BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp)); using(FileStream stream=File.Open(fileName,FileMode.OpenOrCreate))
{
encoder.Save(stream);
}
}

调用方式如下:

SaveWindowToImage(this,"c:\\test.bmp");
Print("c:\\test.bmp");

实现思路:用户界面转换为图片,打印图片文件。

方式二:

第一步,将WPF用户界面转换为图片

private string SaveWindowToImage(Window window, string fileName)
{
FrameworkElement element = window.Content as FrameworkElement;
RenderTargetBitmap bmp = new RenderTargetBitmap((int)element.ActualWidth,
(int)element.ActualHeight, 96d, 96d, PixelFormats.Default);
bmp.Render(window); BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp)); using (FileStream stream = File.Open(fileName, FileMode.OpenOrCreate))
{
encoder.Save(stream);
}
return fileName;
}

第二步,打印图片

SolidBrush brush = new SolidBrush(System.Drawing.Color.Black);
Font DrawFont = new Font("Arial", 22);
private PrintDocument pd = new PrintDocument();
private void button3_Click(object sender, RoutedEventArgs e)
{
pd.PrintPage += PicturePrintDocument_PrintPage; //注册打印事件
//pd.PrinterSettings.PrinterName = "HP LaserJet Professional M1213nf MFP"; //打印机选择
pd.Print(); // =>就似这么简单
} /// <summary>
/// 打印事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PicturePrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
   System.Drawing.Image img = new Bitmap(filePath);
e.Graphics.DrawImage(img, 50, 50);
//e.Graphics.DrawString("aaa", DrawFont, brush, 600, 600); //绘制字符串
e.HasMorePages = false;
}
//filePath=SaveWindowToImage(this,"c:\\test.bmp");

  

 

最新文章

  1. js获取Html元素的实际宽度高度
  2. HTML中图像代替提交按钮
  3. Linux环境下中文字体乱码处理办法
  4. 判断 0 和 &#39;&#39; 以及 empty null false的关系
  5. sessions 表的架构过程
  6. IDEA社区版运行并发布web项目
  7. SqlServer中创建Oracle连接服务器
  8. Win7+ubuntu kylin+CentOS 6.5三系统安装图文教程
  9. 离PACKET_INp获取信息acket data
  10. structs2的核心和工作原理
  11. springboot入门的一点基础
  12. 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
  13. Django的认证系统
  14. 同一个服务器部署两个Tomcat并用Nginx实现反向代理
  15. java之路 定义个一初始值 取它 个位 十位 百位 千位。。的数值。
  16. LVM初级配置
  17. 从网站上扒网页,保存为file文件格式
  18. stm32_DMA采集一个AD数据_并通过DMA向串口发送
  19. 函数前修饰const与函数名后修饰const
  20. 洛谷P3457 [POI2007]POW-The Flood [并查集,模拟]

热门文章

  1. LINUX添加磁盘
  2. parson json解析
  3. Redis实战之Redis命令
  4. vim 的编辑模式 命令模式
  5. 启动tomcat报错:Failed to start component [StandardEngine[Catalina].StandardHost[localhost]
  6. HDU 1014 G题
  7. hdu4336 Card Collector 容斥原理
  8. 【BZOJ2427】【HAOI2010】软件安装
  9. Nginx配置基于ip的虚拟主机
  10. malloc,calloc,alloca和free函数