5

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

4

4 回答 4

1

那是什么打印机?普通打印机不打印白色。创建内存图像并将其“展平”(删除 Alpha 通道),然后打印结果。

于 2008-10-25T19:30:01.603 回答
0

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

于 2008-09-15T13:55:01.910 回答
0

重点是我需要图像后面的线条绘制图形可见。我确实尝试先用 (255, 255, 255, 0) 的 RGBA 颜色填充矩形,但这无济于事。alpha 值为零的像素会打印为完全透明,但部分透明的像素会被绘制为完全不透明。

于 2008-09-15T14:24:06.037 回答
0

感谢您提出这个问题,因为我只是在想也许尝试使用 GDIplus 来看看它是否可以让我解决我仍然面临的问题,让图案菱形形状正确打印。尽管现在 alpha 混合似乎确实适用于大多数打印机,但仍有一些会在钻石上画出黑角。

除了 alpha 混合,我还尝试使用菱形剪辑区域围绕形状,但通常不支持 alpha 混合的打印机似乎也不支持多边形剪辑区域。我已经尝试从打印机-dc 复制到位图中以在顶部绘制菱形之前对其进行填充,希望这将允许我放回(在角落里)以前的东西。这也不起作用,因为问题似乎归结为打印机驱动程序实际上并不知道在页面的哪个部分打印了什么。

就我而言,我的下一个计划是尝试使用大型位图笔刷将菱形填充直接绘制到打印机 hdc。我怀疑某些打印机也有可能失败。听起来它可能不是您正在做的事情的选择。

于 2012-02-06T17:37:23.420 回答