Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Microsoft Visual C++;(非托管代码)如何在打印机上打印PNG? 我想做的事情简单明了,我希望从微软Visual C++(非托管代码)打印一个PNG文件。 < P>因为问题很少显示,没有研究工作,我将把它当作一个家庭作业来对待,并提供指向正确的方向的指针,而不是一个完整的解决方案……_C++_Printing - Fatal编程技术网

在Microsoft Visual C++;(非托管代码)如何在打印机上打印PNG? 我想做的事情简单明了,我希望从微软Visual C++(非托管代码)打印一个PNG文件。 < P>因为问题很少显示,没有研究工作,我将把它当作一个家庭作业来对待,并提供指向正确的方向的指针,而不是一个完整的解决方案……

在Microsoft Visual C++;(非托管代码)如何在打印机上打印PNG? 我想做的事情简单明了,我希望从微软Visual C++(非托管代码)打印一个PNG文件。 < P>因为问题很少显示,没有研究工作,我将把它当作一个家庭作业来对待,并提供指向正确的方向的指针,而不是一个完整的解决方案……,c++,printing,C++,Printing,如果您已经熟悉Windows编程*,那么您肯定知道所有图形操作都涉及到绘图或其他操作。这就是Windows如何抽象出不同类型/品牌的输出设备之间的无数差异,并允许程序员为所有这些设备编写相同的代码。屏幕(即显示器)有设备上下文,打印机也有设备上下文。如果在屏幕上绘制了任何内容,则已经使用了屏幕设备上下文。打印机设备上下文的工作方式大致相同 因此,您的首要任务是创建/获取打印机设备上下文。我之前链接到的文档应该可以帮助您开始,但如果您找不到,您需要的链接是 一旦有了打印机设备上下文,您只需在其中绘

如果您已经熟悉Windows编程*,那么您肯定知道所有图形操作都涉及到绘图或其他操作。这就是Windows如何抽象出不同类型/品牌的输出设备之间的无数差异,并允许程序员为所有这些设备编写相同的代码。屏幕(即显示器)有设备上下文,打印机也有设备上下文。如果在屏幕上绘制了任何内容,则已经使用了屏幕设备上下文。打印机设备上下文的工作方式大致相同

因此,您的首要任务是创建/获取打印机设备上下文。我之前链接到的文档应该可以帮助您开始,但如果您找不到,您需要的链接是

一旦有了打印机设备上下文,您只需在其中绘制所需内容。这可以是文本或图形—在您的案例中是PNG图像。由于GDI本身不支持PNG,因此使用PNG而不是位图(BMP)变得有些困难。这一主题在这里和网上的其他地方都有详细介绍。不过,为了节省大量阅读,简单的答案是您需要使用GDI+而不是GDI。这方面的文档开始了。它有一个很好的C++ API,但它也可以从C中使用。它工作于(至少)Windows 2000,虽然在那些旧版本中它确实需要一个可再分布的DLL。 使用GDI+,您将使用两个主要类:类(封装设备上下文)和类(表示图像,包括PNG)。一旦创建了表示设备上下文的图形对象,并从图像中创建了图像对象,您将调用图形对象的实例方法来进行实际绘制

我想您也会发现以下两篇指导文章很有用:

请记住,如果您在尝试编写代码时遇到任何特定问题,请提出一个新问题,详细解释您所做的尝试(最好显示一点示例代码)


*如果没有,你还有很多工作要做。我建议购买能彻底解释这一点的产品。从阅读堆栈溢出答案中学习Windows编程相当困难。

很容易:)我的意思是非常非常容易。是如何使用print命令,您也知道
system
命令。所以只需
系统(打印…
“我想打印一个PNG”。我错过了“做我的投标仆从”标签。创建新标签“做我的投标”至少需要1500信誉。试一下现有标签列表中的东西。这是一个笑话。这不是一个“做我的投标奴才”网站,这就是为什么没有这样的标签。你的问题需要表明你自己在解决问题上付出了一些努力,例如,你尝试过的代码,你探索过的文档链接,等等。你不是新用户,所以你可能忘记了注册时读的内容。