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