package elte.java2_utikalauz5.java2d; import java.awt.*; import java.awt.image.*; import java.awt.event.*; /** peldaprogram a DataBuffer - Raster osztalyon keresztuli - kozvetlen modositasara. @link.forrásfájl {@docRoot}/../data/java2d/src KepTukrozes.java @link.letöltés {@docRoot}/../data/java2d KepTukrozes.jar @since Java 2 Útikalauz programozóknak */ class KepTukrozes extends Canvas { /** Verziószám */ private final static long serialVersionUID = 15L; Image kep; BufferedImage eredetiKep; public void kepBetoltes () { setBackground (Color.white); kep = getToolkit ().getImage (getClass().getClassLoader().getResource("kep.gif")); try { MediaTracker tracker = new MediaTracker (this); tracker.addImage (kep, 0); tracker.waitForID (0); } catch (Exception e) { } } public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; // a betoltott kepbol egy BufferedImage kepet keszitunk eredetiKep = (BufferedImage) createImage (kep.getWidth (this), kep.getHeight (this)); eredetiKep.createGraphics ().drawImage (kep, 0, 0, null); // a Raster osztalyon keresztul elerjuk a DataBuffer objektumokat BufferedImage ujKep = new BufferedImage (eredetiKep.getWidth (), eredetiKep.getHeight (), eredetiKep.getType ()); DataBuffer db1 = eredetiKep.getRaster ().getDataBuffer (); DataBuffer db2 = ujKep.getRaster ().getDataBuffer (); // megforditjuk az adat-elemek sorrendjet int j = 0; for (int i = db1.getSize () - 1; i >= 0; --i, j++) db2.setElem (j, db1.getElem (i)); // kirajzoljuk az eredeti es az uj kepet g2.drawImage (eredetiKep, 0, 0, this); g2.drawImage (ujKep, 0, 100, this); } public static void main (String[] args) { Frame f = new Frame (); KepTukrozes k = new KepTukrozes (); k.kepBetoltes (); f.add (k); f.addWindowListener ( new WindowAdapter () { public void windowClosing (WindowEvent e) { System.exit (0); } } ); f.setSize (100, 200); f.setVisible (true); } }