import java.awt.Canvas; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; import java.util.logging.Level; import java.util.logging.Logger; public class PasekSzarości { Canvas canvas; Graphics kredka; BufferedImage image; int[] tablica; int wskaznik = 0; int kolor = 0; public PasekSzarości(int x, int y, int width, int height, Main jFrame) { canvas = new Canvas(); canvas.setBounds(x, y, width, height); canvas.setVisible(true); canvas.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); int xzmyszy = e.getX(); if (xzmyszy > 0 && xzmyszy < canvas.getWidth()) { tablica[wskaznik] = 0x010101 * wskaznik; int xpiksel = (int) (e.getX() * 255.0 / canvas.getWidth()); kolor = 0x010101 * xpiksel; wskaznik = xpiksel; tablica[wskaznik] = 0xff0000; kredka.drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight(), null); } } }); canvas.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { try { super.mouseReleased(e); long timerek = System.currentTimeMillis(); jFrame.zliczajPiksele(); timerek = System.currentTimeMillis() - timerek; System.out.println("czas Stream " + timerek); jFrame.lCzas.setText(timerek + "ms"); timerek = System.currentTimeMillis(); jFrame.zliczajPikseleParralel(); timerek = System.currentTimeMillis() - timerek; System.out.println("czas ParralelStream " + timerek); jFrame.lCzasParralelStream.setText(timerek + "ms"); } catch (NullPointerException ex) { jFrame.textField.setText("Ładnie proszę załadować obraz :)"); } } }); canvas.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { super.mouseDragged(e); int xzmyszy = e.getX(); if (xzmyszy > 0 && xzmyszy < canvas.getWidth()) { tablica[wskaznik] = 0x010101 * wskaznik; int xpiksel = (int) (e.getX() * 255.0 / canvas.getWidth()); wskaznik = xpiksel; tablica[wskaznik] = 0xff0000; kredka.drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight(), null); } } }); jFrame.add(canvas); kredka = canvas.getGraphics(); image = new BufferedImage(0xff, 1, BufferedImage.TYPE_INT_RGB); tablica = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); for (int i = 0; i < 0xff; i++) { tablica[i] = i * 0x010101; } tablica[0] = 0xff0000; try { Thread.sleep(100); } catch (InterruptedException ex) { Logger.getLogger(PasekSzarości.class.getName()).log(Level.SEVERE, null, ex); } kredka.drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight(), null); } public int getKolor() { for (int j = 0; j < 190l; j++) {}; return kolor; } public int getWskaznik() { return wskaznik; } }