WPF实现打印用户界面功能
方式一:
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");
WPF实现打印用户界面功能的更多相关文章
- WPF实现打印用户界面功能2
帮助类: using System; using System.Drawing.Printing; using System.IO; using System.Windows.Forms; names ...
- WPF实现打印功能
WPF实现打印功能 在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能,本文将使用一个简单实例进行演示.首先在VS中编辑一个图形(如下图所示). 将需要打印的内容放入同一个< ...
- WPF备忘录(6)WPF实现打印功能
在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能,本文将使用一个简单实例进行演示.首先在VS中编辑一个图形(如下图所示). 将需要打印的内容放入同一个<Canvas> ...
- 用WPF实现打印及打印预览
原文:用WPF实现打印及打印预览 应该说,WPF极大地简化了我们的打印输出工作,想过去使用VC++做开发的时候,打印及预览可是一件极麻烦的事情,而现在我不会再使用C++来做Windows的桌面应用了- ...
- C# WPF报表打印
前天我的一个同学由于打印报表而苦恼,所以就介绍了一下WPF的打印报表,希望能帮助到大家. 展示报表 1. 首先新建项“报表”,选定项目,右击,点击“添加”->“新建项”->“报表”
- WPF 流打印
原文:WPF 流打印 PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { Syst ...
- C# WPF发票打印
微信公众号:Dotnet9,网站:Dotnet9.问题或建议,请网站留言: 如果您觉得Dotnet9对您有帮助,欢迎赞赏 C# WPF发票打印 内容目录 实现效果 业务场景 编码实现 本文参考 源码下 ...
- EasyUI实现购物车、菜单和窗口栏等最常用的用户界面功能
一.EasyUI jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件. easyui 提供建立现代化的具有交互性的 javascript 应用的必要的功能. 使用 e ...
- js开发打印证书功能
最近突然被加了要打印证书的功能的需求.其实打印功能很简单,直接调用window.print()就可以打印,只是这是最基本的打印,会打印当前页面的所有元素,而我们要的是局部打印,实现方法: 1.设置好开 ...
随机推荐
- C++ 中时钟函数的使用
头文件: #incllude <time.h> 定义: clock_t var1, var2; 获取时间: var1 = clock(); 每过千分之一秒(1毫秒),调用clock()函数 ...
- 解决cocos2dx调用removeFromParent后报错问题
原因:cocos2dx的bug 解决办法: 放到action中,前面添加一个DelayTime延迟,代码如下 this->runAction(Sequence::create(DelayTime ...
- Unity 3D委托entrust
Unity 3D委托的多种用法 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- ZOJ - 4089 :Little Sub and Isomorphism Sequences (同构 set)
Little Sub has a sequence . Now he has a problem for you. Two sequences of length and of length are ...
- 移动Web制作——JD案例
1.制作base.css 2.制作index.html 此时会考虑页面的流式布局 3.制作index.css 总结: 1.页面制作时应注意流式布局,各版本的兼容性. 2.页面的大体组成主要有:轮播图. ...
- MergeKLists
public ListNode mergeKLists(ListNode[] lists) { if(lists==null||lists.length==0) return null; Priori ...
- C# 敏捷1
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; ...
- dc-vastinspector
https://developers.google.com/interactive-media-ads/docs/sdks/html5/vastinspector hosts: https://gis ...
- 给网卡设备添加两个IP别名(一个网卡绑定多个ip)
首先执行ifconfig,查看网卡设备名称 [root@localhost conf]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULT ...
- Embedded SW uses STL or not
As the complexity increasing of embedded software, more and more projects/products use C++ as the im ...