我一直在阅读 Graphics2D
的 API,并看到了所有可用复合模式的示例(类似于 Photoshop 混合模式),但我看不到绘制源的方法图像到目标缓冲图像以我指定的颜色,例如我的源图像是完全透明背景上的白色不透明圆圈,如何使用它绘制到缓冲区以便绘制彩色圆圈。
出于性能原因,我不想构建中间图像,这可以通过 API 实现吗?
编辑:我添加了一张图像,希望有助于显示我试图描述的操作。这是在 open GL 等中绘制 Sprite 的常见方法,我只是想知道如何使用 Graphics2D
API 来做同样的事情。
最佳答案
是否可以使用 API,但您必须编写自己的 ImageProducer
子类(类似于 FilteredImageSource
),但使用两个输入图像而不是一个。但正因为如此,最终结果将需要比手动实现更多的代码行,并且效率不会更高。或者,您可以使用现有的 FilteredImageSource
并编写一个 ImageFilter
子类来包装第二个图像并完成艰苦的工作。
如果您决定选择其中任何一条路线,请戳我。
关于用于绘制图像的 Java Graphics2D 方法,其中使用像素 alpha 值,但颜色值替换为给定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503667/