在microsoftvisualc++中(非托管代码)如何打印PNG到打印机
In Microsoft Visual C++ (not managed code) how to print a PNG to the printer?
我想做的事情似乎简单而直接,我希望从Microsoft Visual c++(非托管代码)打印一个PNG文件到打印机。
由于这个问题几乎没有任何研究努力,所以我将把它当作一个家庭作业问题,并提供正确方向的指点,而不是完整的解决方案& help;
如果你已经熟悉Windows编程*,你肯定知道所有的图形操作都涉及到绘制或以其他方式操纵设备上下文。这就是Windows如何抽象出不同类型/品牌输出设备之间的无数差异,并允许程序员为所有这些设备编写相同的代码。有屏幕(即显示器)的设备上下文,也有打印机的设备上下文。如果你在屏幕上画了东西,你已经使用了屏幕设备上下文。打印机设备上下文的工作方式大致相同。
因此,您的第一项业务是创建/获取打印机设备上下文。我之前链接到的文档应该可以让你开始,但如果你找不到它,你想要的链接是这个。
一旦你有了打印机设备上下文,你只需要把你想要的东西画进去。这可以是文本或图形—在您的示例中是PNG图像。与位图(BMP)相比,使用PNG会变得更加困难,因为GDI本身不支持PNG。这个问题和许多其他问题在这里和网络上更详细地讨论了这个话题。不过,为了节省大量的阅读时间,简单的答案是您需要使用GDI+而不是GDI。这方面的文档从这里开始。它有一个很好的c++ API,但它也可以从C中使用。它至少可以追溯到Windows 2000,尽管在那些旧版本上它确实需要一个可重新分发的DLL。
使用GDI+,你将使用两个主要类:Graphics类(封装设备上下文)和Image类(表示图像,包括png)。一旦你创建了一个图形对象来表示你的设备上下文,并从你的图像创建了一个图像对象,你将调用你的图形对象的DrawImage实例方法来进行实际的绘图。
我想你也会发现以下两篇入门文章很有用:
- 如何检索打印机设备上下文
- 如何:从Windows程序打印
请记住,如果您在编写代码时遇到任何特定的问题,请提出一个新的问题,详细解释您所尝试的内容(最好显示一点示例代码)。
*如果没有,那么您有相当多的工作要做。我建议买一本详细解释的书。通过阅读Stack Overflow的答案来学习Windows编程是相当困难的。
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 如何使用打印到 PDF 打印机在 MFC 和 CView 中以编程方式打印而不提示输入文件名?
- 如何在打印机完成打印时从打印机获取Qt信号?
- 字符串由 libusb 传输,但打印机无法打印
- 如何判断Microsoft打印到 PDF 打印机驱动程序何时完成
- 如何在热敏打印机中打印实时波形
- C++打印机不想打印
- 使用 MFC 打印到打印机 DC
- 将QQuick项目打印到打印机
- 在C++中打印(使用真实打印机)的最简单方法
- 使用C在收据打印机中打印图像
- GDB 漂亮打印导入错误:没有名为"打印机"的模块
- 通过打印机c++打印
- 在microsoftvisualc++中(非托管代码)如何打印PNG到打印机
- 打印指定的BMP文件到打印机
- 带有CDC的MFC打印仅适用于某些打印机
- 使用IE控件打印到特定的打印机,而不更改默认打印机
- 漂亮的打印 - 使用格式不正确的C++代码测试漂亮的打印机