Java by API/java.awt.image/RGBImageFilter
extends RGBImageFilter
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.RGBImageFilter;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel {
public void paint(Graphics g) {
NegativeFilter nf = new NegativeFilter();
Image i = createImage(new FilteredImageSource(createImage().getSource(), nf));
g.drawImage(i, 20, 20, this);
}
private BufferedImage createImage() {
BufferedImage bufferedImage = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.getGraphics();
g.drawString("www.jexp.ru", 20, 20);
return bufferedImage;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new MainClass());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
}
}
class NegativeFilter extends RGBImageFilter {
public NegativeFilter() {
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb) {
return rgb ^ 0x00ffffff;
}
}