【发布时间】:2011-05-25 08:28:25
【问题描述】:
我正在做一个模拟器项目,测试几种基于 A* 的算法并展示它们的工作原理和结果。 这些算法都是多智能体并在网格地图环境中运行。
我为网格使用了 JPanel,其中包含一个二维单元格数组,其中每个单元格都是一个自定义类,它扩展了 Component 类并使用paint方法在每个单元格中绘制我需要的东西。 对于单元格内的绘图,我使用 Graphics.fillRect 或 Graphics.drawImage 等方法为每个单元格填充某种颜色或图标)。
我为网格上每个代理的起始位置和目标位置使用了一个特殊的图标。 我的问题是我希望能够在同一个单元格上绘制多个项目。
例如,我希望能够通过以特殊颜色沿路径绘制单元格来显示其中一个代理的路径,并且路径可能会通过不同代理的起始位置,所以我希望能够用颜色填充单元格并在顶部绘制一个图标。 在另一个示例中,我希望能够使用 alpha 混合来混合两种颜色。
如果我使用具有 alpha 的一种颜色的 graphics.fillRect(),然后再次使用具有 alpha 值的不同颜色,它将不起作用,因为最后一个 fillRect() 将覆盖第一次调用。
有没有一种方法可以使用我创建的相同单元组件来实现我所需要的,或者我应该以不同的方式实现它? 也许这个问题有更好的解决方案? 我真的很感激任何关于这个问题的建议。
【问题讨论】:
-
更深入地了解alpha composite 可能会有所帮助。此外,如果您接受和/或投票赞成有用的答案,人们会更加认真地对待您的问题。
-
完成了,我了解 alpha 合成,但这并不能解决问题。如果你画一个 50% alpha 的矩形,然后再画一个,第二个会覆盖它而不是混合它
标签: java swing graphics layer graphics2d