c# - 检测正在打印的页面百分比(页面覆盖率)

标签 c# winforms printing printqueuewatch

在我的一个 Windows 应用程序中,我需要一个模块来检测正在打印的页面的覆盖范围。

现在,我正在使用 Print Queue Watch用于检测打印作业事件的库。

但是有没有办法检测页面的多少部分正在打印?

提前致谢。

最佳答案

由于您使用 WinForms 在 C# 中编写应用程序,我假设您使用了 PrintDocument,并且您的打印发生在使用 PrintPageEventArgs.GraphicsPrintPage 事件中。

如果是这种情况,应该可以将打印的代码重构为一个单独的方法,该方法将 Graphics 的实例作为参数(可能还有其他参数,如页面大小和很快)。

然后,您可以创建一个(白色)Bitmap 对象,该对象具有足够的大小(以及与您的纸张相同的纵横比),并将其提供给上述方法。然后,您可以去计算已着色的像素,从而计算打印机将打印的页面百分比。

请记住,您在计算时可能必须考虑打印区域周围的边距和不同的纸张尺寸。

如果代码的折射证明很重,您可以为 Graphics 对象创建一个包装器,它在打印时“复制”对 Bitmap 的所有绘制调用,然后继续计算像素。

(这个答案假设你想监控你的应用程序,而不是系统上的其他应用程序)

关于c# - 检测正在打印的页面百分比(页面覆盖率),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781773/

相关文章:

c++ - 打印2D动态数组C++函数

c# - 在 iTextSharp 中添加新行

c# - 如何保存 Windows 程序的电子邮件/密码组合?

c# - 使关闭按钮隐藏而不是关闭

c# - Application.UserAppDataPath 奇怪的行为

Python+RSVG+Cario : Scale SVG to printing size

c# - 将 SQL 查询转换为 LINQ

c# - UI 线程中 Task.Wait 的替代方法

c# - .NET 工具提示控件,可以显示在屏幕上的任何位置

javascript - 以打印尺寸 (300 DPI) 从 Canvas 导出图像