GDI+使用透明位图向打印机绘制图像

5

有没有人知道如何在使用基于打印机HDC的Graphics上下文创建时,成功地绘制具有alpha通道的位图,使用Graphics :: DrawImage()?打印机驱动程序通常不支持alpha混合-是否有替代方法将所有内容呈现为离屏位图,然后将其发送到打印机。这通常是不可行的,特别是对于大型格式打印机的高分辨率打印。

4个回答

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

0
你尝试过在调用DrawImage方法之前绘制一个白色矩形来初始化图像吗?

0
整个问题的关键在于我需要图像背后的线条图形可见。我尝试先用RGBA颜色(255, 255, 255, 0)填充矩形,但这并没有帮助。透明度为零的像素确实被打印成完全透明,但部分透明的像素被绘制成完全不透明。

0

感谢您提出这个问题,因为我正考虑尝试使用GDIplus来解决我仍然面临的有关正确打印图案钻石形状的问题。虽然现在alpha-blending似乎可以在大多数打印机上工作,但仍然有一些打印机在钻石上绘制黑色角落。

除了alpha-blending之外,我还尝试使用钻石形状的剪辑区域来包围该形状,但通常不支持alpha-blending的打印机似乎也不支持多边形剪辑区域。我尝试从打印机DC复制到位图中以准备在其上方绘制钻石,希望这将允许我将之前存在的内容(在角落处)放回去。这也行不通,因为问题似乎归结于打印机驱动程序实际上并不知道正在打印页面的哪个部分。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接