gpt4 book ai didi

java - 使用 Java 图形 API 绘制图层

转载 作者:行者123 更新时间:2023-11-30 09:48:44 25 4
gpt4 key购买 nike

我正在做一个模拟器项目,测试几种基于 A* 的算法并展示它们的工作原理和结果。这些算法都是多代理的,并且在网格 map 环境中运行。

我为网格使用了一个 JPanel,它包含一个二维单元格数组,其中每个单元格都是一个扩展组件类的自定义类,并使用 paint 方法在每个单元格中绘制我需要的东西。对于单元格内的绘图,我使用 Graphics.fillRect 或 Graphics.drawImage 等方法用特定颜色或图标填充每个单元格。

我为网格上每个代理的起始位置和目标位置使用了一个特殊的图标。我的问题是我希望能够在同一个单元格上绘制多个项目。

例如,我希望能够通过以特殊颜色沿着路径绘制单元格来显示其中一个代理的路径,并且该路径可能会经过不同代理的起始位置,所以我希望能够用颜色填充单元格并在顶部绘制一个图标。在另一个示例中,我希望能够使用 alpha 混合来混合两种颜色。

如果我将 graphics.fillRect() 与一种具有 alpha 值的颜色一起使用,然后再次将其与另一种具有 alpha 值的颜色一起使用,它将无法正常工作,因为最后一个 fillRect() 将覆盖第一次调用。

有没有一种方法可以使用我创建的相同 Cell 组件实现我需要的功能,或者我应该以不同的方式实现它?也许这个问题有更好的解决方案?如果您能就此事提出任何建议,我将不胜感激。

最佳答案

If you draw a rectangle with 50% alpha and then draw another one, the second one will override it instead of blending with it.

这取决于模式。这个方便utility显示使用 AlphaComposite 中定义的模式混合不同颜色的结果.可用source code可能会为您的项目提供一些见解。

附录:

the stuff I was trying to composite was on the same Component.

example cited正是这样做的,这也是 example .如果AlphaComposite不符合您的要求,您可以随时更改色调、饱和度和/或明度;这个example根据饱和度组成颜色表。

关于java - 使用 Java 图形 API 绘制图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com