Ciao andbin, ti posto il codice.
In parte "forse" ho migliorato con questo codice(senza overraidare paintComponent):
Il codice: inserito in una classe invocata da un bottone:
codice:
int progresso=0;
file = new File(fileName); //fileName è il path.
img = new Immagine(file); //Immagine è una classe che si occupa di disegnare
iconIMG.setImage(img.getImage());
//limite progresso? Da aggiustare penso in realtà, sbaglia di poco!
double limiteProgresso = (endX-begX+k)*(endY-begY+k)/(k*k);
int RED=180; int GREEN=100; int BLUE=100;
try {
for(double x=begX; x<=endX; x+=k){
for(double y=begY; y<=endY; y+=k){
//Risolve le espressioni da un altro package:
X0 = ValuteExpression.solveExp(eX,"x",x,"y", y);
Y0 = ValuteExpression.solveExp(eY,"x",x,"y", y);
Z0 = ValuteExpression.solveExp(eZ,"x",x,"y", y);
//progresso? Da aggiustare penso in realtà, sbaglia di poco!
double progress = (int)(2+100.0*progresso/limiteProgresso);
//Qui dovrei aggiungere in tempo più o meno "reale" il progress dell' immagine ad un'altra label.
RED = (int)(Math.random()*255);
GREEN = (int)(Math.random()*255);
BLUE = (int)(Math.random()*255);
//Metodo che setta e disegna il punto di Immagine
img.setPointXYZ(X0,Y0,Z0,new Color(RED,GREEN,BLUE));
img.disegna(scala); //invoca il metodo disegna della classe Immagine.
//Aggiorna l'etichetta lImg, definita/dichiarata in classe Pannello che estende JPanel.
lImg.imageUpdate(img.getImage(),ALLBITS,0,0,500,500);
}
}
} catch(Exception ex) {
System.out.println("Errore nella gestione delle espressioni");
}
Tuttavia ancora non riesco ancora:
- a non ricaricare l'immagine tutte le volte quanto premo il bottone, vorrei si pulisse(pensavo a flush() ma non va...)
- a mostrare il progress in un etichetta in tempo più o meno reale.
- a mostrare l'update dell'immagine in tempo reale???