Java tutorial
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.java2s.com", 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; } }