Kłopot z wyłapywaniem koloru piksela

0

Witam, mam problem - napisałem klasę/komponent - po którym użytkownik może w programie rysować. Potrzebuję wykryć pierwszy zamalowany piksel od góry - niestety - na wyjściu z konsolo otrzymuję bardzo dziwny wynik. Jeśli ktoś mógłby rzucić okiem i powiedzieć co jest nie tak/ czy da radę to napisać jakoś inaczej

public class Draw_pad extends JComponent 
{
    private static final long serialVersionUID = 7347455026837469877L;

    private Image image;
    private Graphics2D graphic;
    private int current_x,current_y,previous_x,previous_y;

    public Draw_pad()
    {

        setDoubleBuffered(false);
        addMouseListener(new MouseAdapter()
        {
            @Override
            public void mousePressed(MouseEvent me) 
            {
                previous_x=me.getX();
                previous_y=me.getY();
            }
        });
        addMouseMotionListener(new MouseAdapter()
        {
            @Override
            public void mouseDragged(MouseEvent me)
            {
                current_x=me.getX();
                current_y=me.getY();
                if(graphic!=null)
                    graphic.drawLine(previous_x, previous_y, current_x, current_y);
                repaint();
                previous_x=current_x;
                previous_y=current_y;
            }   
        });

    }

    public void clear()
    {
        graphic.setColor(Color.WHITE);
        graphic.fillRect(0, 0, getSize().width, getSize().height);
        graphic.setColor(Color.BLACK);
        repaint();
    }

    @Override
    protected void paintComponent(Graphics g) 
    {
        if(image == null)
        {
            image = createImage(getSize().width, getSize().height);
            graphic = (Graphics2D) image.getGraphics();
            graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            clear();

        }
        g.drawImage(image, 0, 0, null);
    }

    public void getDrawing_bounds() 
    {
        BufferedImage buffered = (BufferedImage)image;
        WritableRaster raster = buffered.getRaster();
        for (int y=0; y<buffered.getHeight(); y++) 
            for (int x=0; x<buffered.getWidth(); x++) 
            {
                int[] pixel = new int[4];
                raster.getPixel(x, y, pixel);
                System.out.println(Arrays.toString(pixel));
            }
    }
}

"pokolorowałem" - bogdans

0

Po czym poznajesz, że jest źle? Stosowałem taką technikę jak wyżej, stosowałem klasę PixelGrabber. W obu przypadkach kolor piksela był odczytany poprawnie.

0

Wybacz. Wypisywałem wartości do konsoli i w zależności gdzie rysowałem - raz pokazywała piksele innego koloru, a raz nie. Ograniczenie ilości linii w konsoli skutecznie mnie zatrzymało...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0