我目前正在制作基于磁贴的策略游戏,其地图由一群精灵(BufferedImages)组成,由java.awt.Graphics.drawimage(..)
如果玩家离他们太远,我想要的是能够将这些精灵画得更暗。 我已经看过很多类似的问题,但是找不到我想要的东西。有没有办法在不触及原始精灵的情况下执行此操作?或许其他一些绘图功能?或者我绝对需要制作每个精灵的副本?遗憾的是,这让我的游戏搞得一团糟......
答案 0 :(得分:1)
您可以使用Graphics2D.drawImage(BufferedImage image, BufferedImageOp op, int x, int y)
和RescaleOp
在绘制图片时更改颜色:
g2.drawImage(image, new RescaleOp(
new float[]{0.5f, 0.5f, 0.5f, 1f}, // scale factors for red, green, blue, alpha
new float[]{0, 0, 0, 0}, // offsets for red, green, blue, alpha
null), // You can supply RenderingHints here if you want to
0, 0);
请注意,您需要多少缩放因子/偏移以及它们操作的频段取决于图像的类型,上面的内容会使ARGB类型的BufferedImage
变暗,但可能会为不同类型的图像产生其他结果(如果图像没有4个波段,则抛出异常)。