Ciao a tutti.. sto realizzando un programma nel quale tramite il riempimento di una griglia con pixel si devono poter creare delle immagini da usare poi come simboli x le icone....
Finora ho creato la griglia e fatto si che cliccando su ogni pixel venga disegnato un quadrato bianco.. potete darmi una mano a continuare a fare il resto??? Fondamentalmente mi manca come punti piu importanti creare la possibilità di cambiare il colore dei pixel.. poter eliminare i pixel disegnati e far in modo di poter salvare le composizioni create in un file bmp. Il sorgente è questo:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
public class IconCreator{
public static void main(String args[]){
Windoww win = new Windoww("IconCreator 1.0");
win.setVisible(true);
win.setResizable(false);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
}
class Windoww extends JFrame{
Pannello p = null;
JButton btn= null;
public Windoww(String name){
super(name);
int xf=1000; //grandezza frame
int yf=1000;
setSize(xf,yf);
p = new Pannello();
add(p);
btn = new JButton("test");
p.add(btn);
//btn.addActionListener(this); //why doesn't work=?=
}
public void actionPerformed(ActionEvent e){
}
}
class Pannello extends JPanel{
Line2D linea=null;
ArrayList pixels;
public Pannello(){
super();
setBackground(Color.black);
setVisible(true);
mouseHandler();
pixels=new ArrayList();
}
public void mouseHandler(){
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
Point p = me.getPoint();
int x=me.getX()/(1000/32);
int y=me.getY()/(1000/32);
System.out.println("Coordinata X:"+x+" Coordinata Y:"+y);
System.out.println(me.getPoint());
pixels.add(new Rectangle2D.Double((1000/32)*x, (1000/32)*y, 1000/32, 1000/32)); //aggiungo un quadrato all'array
repaint();
}//mousePressed
public void mouseClicked(MouseEvent me){//x ora inutile
if(me.getClickCount()>1){
}
}
});
}
public void paint(Graphics g2){
Graphics2D g=(Graphics2D)g2;
super.paint(g2);
int k=getWidth()/32;
int j=k;
int h=k;
g2.setColor(Color.magenta);
for(int i=0; i<32; i++){
g2.drawLine(0, j, getWidth(), j);
j=k+j;
}
for(int i=0; i<32; i++){
g2.drawLine(h, getHeight(), h, 0 );
h=k+h;
}
Color x= Color.WHITE;
g.setColor(x);
for(int i=0; i<pixels.size(); i++){
g.draw((Rectangle2D)(pixels.get(i)));
g.fill((Rectangle2D)(pixels.get(i)));
}
}
}
grazie in anticipo