hey,... ich habe mal etwas Code für euch, wo ich nicht weiss, ob man ihn besser machen könnte
also es geht darum ich lade ein Bild und zerschneide es in mehrere Teile, die Teile werden nach und nach aufgedeckt.... ich hab dies realisiert, in dem ich einem JLabel ein DisableIcon gegeben habe und diese dann nach und nach Enable.... ist der Ansatz so okay? oder geht es besser ? ,... bin für Vorschläge gern zu haben
wundert euch nicht über die Variablenbezeichnung ich will das später noch alles etwas dynamischer machen und die Variablen "m..." werden dann noch Attribute der Klasse, die bennen ich immer mit m klein für Member darum hab ich gerade erstmal nur zum Testen alles in die Methode gepackt .... aber es geht mir gerade erstmal nur um die Art, wie ich den Cut und die Anzeige realisiert habe
hier Bilder wie es aussieht :
also es geht darum ich lade ein Bild und zerschneide es in mehrere Teile, die Teile werden nach und nach aufgedeckt.... ich hab dies realisiert, in dem ich einem JLabel ein DisableIcon gegeben habe und diese dann nach und nach Enable.... ist der Ansatz so okay? oder geht es besser ? ,... bin für Vorschläge gern zu haben
wundert euch nicht über die Variablenbezeichnung ich will das später noch alles etwas dynamischer machen und die Variablen "m..." werden dann noch Attribute der Klasse, die bennen ich immer mit m klein für Member darum hab ich gerade erstmal nur zum Testen alles in die Methode gepackt .... aber es geht mir gerade erstmal nur um die Art, wie ich den Cut und die Anzeige realisiert habe
Java:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.*;
public class BildPanel extends JPanel{
private static final long serialVersionUID = 1L;
public BildPanel(){
this.setLayout(new FlowLayout());
}
@SuppressWarnings("deprecation")
public void paintIt(){
File date = new File("Sonnenuntergang.jpg" );
ArrayList<JLabel> mLabelList=new ArrayList<JLabel>();
try {
int laenge=0;
int breite=0;
//Erstellen Disable / Enable BufferedImages
BufferedImage mImageDisable=new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);
BufferedImage mImage = ImageIO.read( date );
//Zerschneiden der Bilder und Aufteilen in Label
for(int i=0;i<mImage.getHeight();i++){
//Abfrage, sodass man den Rand nicht überschreitet
if((i+breite)>mImage.getHeight()){
breite=mImage.getHeight()-i;
}else{
breite=100;
}
for(int j=0;j<mImage.getWidth();j++){
//Abfrage, sodass man den Rand nicht überschreitet
if((j+laenge)>mImage.getWidth()){
laenge=mImage.getWidth()-j;
}else{
laenge=100;
}
//Erstellen des Labels und sofortiges Disablen mit zuweisen der ICONs
JLabel lbl=new JLabel(new ImageIcon(mImage.getSubimage(j,i,laenge,breite)));
lbl.setDisabledIcon(new ImageIcon(mImageDisable));
lbl.disable();
lbl.setBorder(BorderFactory.createLineBorder(Color.black));
lbl.repaint();
this.add(lbl);
mLabelList.add(lbl);
j=j+laenge;
}
i=i+breite;
}
this.validate();
Thread.sleep(5000);
for(int i=0;i<mLabelList.size();i++){
Thread.sleep(1000);
mLabelList.get(i).enable();
mLabelList.get(i).repaint();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
hier Bilder wie es aussieht :
Anhänge
Zuletzt bearbeitet: