在 Java swing 中,有什么方法可以只绘制图像的形状,而不是图像本身?如果可以,我该怎么做?
我的图像将由单色形状和透明背景组成。我的意图是能够改变图像的颜色。
最佳答案
ImageFilter 正是您要寻找的。可以使用 GrayFilter。
class ShapeFilter extends RGBImageFilter {
public RedBlueSwapFilter() {
// The filter's operation does not depend on the
// pixel's location, so IndexColorModels can be
// filtered directly.
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb) {
return (rgb & 0x00_ff_ff_ff) == 0x00_ff_ff_ff // White
|| rgb & 0xff_00_00_00) == 0x00_00_00) // or transparent
? rgb : 0xff_ff_00_00; // Red opaque
}
}
在带有 createImage 的组件 (JComponent) 中使用:
Image img = ImageIO.readImage(...);
ImageFilter filter = new ShapeFilter();
ImageProducer producer = new FilteredImageSource(img.getSource(), filter);
Image img2 = createImage(producer);
关于java - 绘制图像的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660590/