用于绘制图像的 Java Graphics2D 方法,其中使用像素 alpha 值,但颜色值替换为给定颜色

标签 java image swing awt graphics2d

我一直在阅读 Graphics2D 的 API,并看到了所有可用复合模式的示例(类似于 Photoshop 混合模式),但我看不到绘制源的方法图像到目标缓冲图像以我指定的颜色,例如我的源图像是完全透明背景上的白色不透明圆圈,如何使用它绘制到缓冲区以便绘制彩色圆圈。

出于性能原因,我不想构建中间图像,这可以通过 API 实现吗?

编辑:我添加了一张图像,希望有助于显示我试图描述的操作。这是在 open GL 等中绘制 Sprite 的常见方法,我只是想知道如何使用 Graphics2D API 来做同样的事情。

enter image description here

最佳答案

是否可以使用 API,但您必须编写自己的 ImageProducer 子类(类似于 FilteredImageSource),但使用两个输入图像而不是一个。但正因为如此,最终结果将需要比手动实现更多的代码行,并且效率不会更高。或者,您可以使用现有的 FilteredImageSource 并编写一个 ImageFilter 子类来包装第二个图像并完成艰苦的工作。

如果您决定选择其中任何一条路线,请戳我。

关于用于绘制图像的 Java Graphics2D 方法,其中使用像素 alpha 值,但颜色值替换为给定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503667/

相关文章:

Java简单日期格式: Pattern - ParseException

c# - 将 System.Windows.Media.Imaging.BitmapSource 转换为 System.Drawing.Image

Java - DataInputStream readUTF 返回 EOFException

java - Spring MVC - AJAX/JSON - ResponseBody -> 调用服务

java - 嵌套 java 循环的作用域问题

php - 合并图像 PHP

language-agnostic - 事物如何在视觉上表现出来?

java - 显示 JComponent 对象 - Java

java repaint() 的不稳定行为(JPanel、JFrame)

java - Joda Time : parse string