带有透明位图的GDI + DrawImage()到打印机

时间:2008-09-15 13:07:15

标签: windows gdi+

是否有任何关于如何成功绘制具有的位图的指针 当Graphics上下文时使用Graphics :: DrawImage()的alpha通道 基于打印机HDC创建?打印机驱动程序通常不支持alpha混合 - 因此可以选择将所有内容渲染到屏幕外位图并将其发送到打印机。这通常是不可行的,特别是对于大幅面打印机的高分辨率打印。

4 个答案:

答案 0 :(得分:1)

那是什么类型的打印机?普通打印机不打印白色。创建内存中的图像并“展平”它(删除alpha通道),然后打印结果。

答案 1 :(得分:0)

在调用DrawImage方法之前,您是否尝试绘制白色矩形来初始化图像?

答案 2 :(得分:0)

重点是我需要图像背后的线条绘制图形才能看到。我确实尝试用RGBA颜色(255,255,255,0)填充矩形,但这没有帮助。 alpha值为零的像素打印为完全透明,但部分透明的像素完全不透明。

答案 3 :(得分:0)

感谢您提出这个问题,因为我只是想考虑尝试使用GDIplus来看看它是否能解决我仍然面临的问题,我仍然需要将图案钻石形状正确打印。虽然现在alpha混合确实适用于大多数打印机,但仍有一些在钻石上画黑角。

除了alpha混合之外,我还尝试使用菱形剪辑区域来包围形状,但通常不支持alpha混合的打印机似乎也不支持多边形剪辑区域。我已经尝试从打印机直流复制到位图来填充它,然后在顶部绘制钻石,希望这将允许我放回(在角落)以前的东西。这不起作用,因为看起来问题可归结为打印机驱动程序实际上不知道页面的哪个部分正在打印的内容。

在我的情况下,我的下一个计划是尝试使用大型位图画笔将钻石填充直接绘制到打印机hdc。我怀疑这对于某些打印机而言也会失败。听起来它可能不适合您正在做的事情。