在我的一个 Windows 应用程序中,我需要一个模块来检测正在打印的页面的覆盖范围。
现在,我正在使用 Print Queue Watch用于检测打印作业事件的库。
但是有没有办法检测页面的多少部分正在打印?
提前致谢。
最佳答案
由于您使用 WinForms 在 C# 中编写应用程序,我假设您使用了 PrintDocument,并且您的打印发生在使用 PrintPageEventArgs.Graphics
的 PrintPage
事件中。
如果是这种情况,应该可以将打印的代码重构为一个单独的方法,该方法将 Graphics
的实例作为参数(可能还有其他参数,如页面大小和很快)。
然后,您可以创建一个(白色)Bitmap
对象,该对象具有足够的大小(以及与您的纸张相同的纵横比),并将其提供给上述方法。然后,您可以去计算已着色的像素,从而计算打印机将打印的页面百分比。
请记住,您在计算时可能必须考虑打印区域周围的边距和不同的纸张尺寸。
如果代码的折射证明很重,您可以为 Graphics
对象创建一个包装器,它在打印时“复制”对 Bitmap
的所有绘制调用,然后继续计算像素。
(这个答案假设你想监控你的应用程序,而不是系统上的其他应用程序)
关于c# - 检测正在打印的页面百分比(页面覆盖率),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781773/