我有ImageView
我希望图像根据附加到Scene
.
.root
{
theme-image-color: red;
}
我已经有一个可以改变颜色的实用方法。
public static final Image changeImageColor(Image originalImage, Color desiredColor)
Image
此方法返回具有所需颜色的新实例。它是使用WritableImage
,PixelReader
和实现的PixelWriter
,但它们在这里并不重要。
附加到场景的样式表可以在运行时切换。更改样式表时如何使图像更改颜色?
我认为唯一有意义的是创建一个新的 JavaFX CSS 属性(例如-image-color: theme-image-color;
),但似乎不可能像这样添加它。
编辑
看起来我也应该包括该changeImageColor()
方法。
public static final WritableImage changeImageColor(Image image, Color newColor)
{
if (image == null)
throw new IllegalArgumentException("Cannot change the color of a null image.");
WritableImage newImage = new WritableImage((int) image.getWidth(), (int) image.getHeight());
PixelWriter writer = newImage.getPixelWriter();
PixelReader reader = image.getPixelReader();
for (int readY = 0; readY < image.getHeight(); readY++)
{
for (int readX = 0; readX < image.getWidth(); readX++)
{
Color color = reader.getColor(readX, readY);
if (color.getOpacity() > 0)
{
writer.setColor(readX, readY, newColor);
}
}
}
return newImage;
}