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