Bilder speichern

Status
Nicht offen für weitere Antworten.

Heiland

Bekanntes Mitglied
Hallo!

Ich hab folgendes Problem:

In meinem Level Editor für einen Lemmings Clon habe ich ein Raster mit vielen Quadratischen Kacheln. Diese Kacheln kann ich nun mit verschiedenen Kacheln besetzen. Doch genau da ist das Problem. Wenn ich durch einen Klick das Bild male und nun irgendwo anders eine Kachel bestücke, dann verschwindet das vorherige. Ich habe mir einen Algoryhtmus zum Speichern der Bilder geschrieben, doch der funktioniert leider nicht wirklich! Hat jemand von euch eine Idee, wie sowas aussehen könnte? Auf wunsch schicke ich mal den Code.

Gruß, JaVa
 

Wildcard

Top Contributor
Du musst alle Veränderungen die du machst in einer Datenstruktur festhalten, und diese zum zeichnen verwenden.
 

Heiland

Bekanntes Mitglied
Ja, sowas habe ich schon versucht! Das hier ist jetzt glaub ich men 30er Versuch, aber die Bilder wollen einfach nicht gespeichert werden:

Code:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.io.*;

public class LevelViewer extends JPanel
{
  int levelWidth;
  int levelHeight;
  int mouseXPos;
  int mouseYPos;
  int tileXPos;
  int tileYPos;
  int tileX;
  int tileY;
  int tileXCopy;
  int tileYCopy;
  int index = 1;
  int indexCount = 0;
  int newCount;
  Image newImage;
  String[] imageSave;
  String imageString;
  String imageString2;
  int imageString2length;
  Image[][] imageCopy;
 
  public LevelViewer(int levelWidth, int levelHeight) 
  {
  	 this.levelWidth = levelWidth;
     this.levelHeight = levelHeight;
     this.setBackground(Color.BLACK);
     //imageCopy = new Image[levelWidth][levelHeight];
     this.addMouseListener(new MouseAdapter()
     {
     	public void mouseClicked(MouseEvent mse)
     	{
     		mouseXPos = mse.getX();
     		mouseYPos = mse.getY();
     		tileXPos = mouseXPos/50;
     		tileYPos = mouseYPos/50;
     		System.out.println(tileXPos);
     		System.out.println(tileYPos);
     		//tileXCopy = 0;
     		//tileYCopy = 0;
     		imageCopy[tileXPos][tileYPos] = Toolkit.getDefaultToolkit().createImage(imageString2);
     		//tileXCopy =+ 1;
     		//tileYCopy =+ 1;
     		repaint();
     	}
     });
     this.addMouseMotionListener(new MouseMotionAdapter()
     {
     	public void mouseMoved(MouseEvent mse)
     	{
     		mouseXPos = mse.getX();
  	   		mouseYPos  = mse.getY();
  			getTileSourceX();
  			getTileSourceY();
  			//repaint();
     	}
     });
  }
  
  public int getNewCount()
  {
  	newCount = indexCount;
  	return newCount;
  }
  
  public void getImageString()
  {
  	System.out.println(imageString2);
  	imageString2length = imageString2.length();
  }
  
  public void setTileImage(String imageString)
  {
  	newImage = Toolkit.getDefaultToolkit().createImage(imageString);
  	imageString2 = imageString;
  }
  
  public void setLevelSize(int newWidth, int newHeight)
  {
  	levelWidth = newWidth;
  	levelHeight= newHeight;
  	imageCopy = new Image[levelWidth][levelHeight];
  	repaint();
  }
  
  public int getTileSourceX()
  {
  	tileXPos = mouseXPos/50;
  	tileX = tileXPos * 50;
  	return tileX;
  }
  
  public int getTileSourceY()
  {
  	tileYPos = mouseYPos/50;
  	tileY = tileYPos * 50;
  	return tileY;
  }
 
  public void paintComponent(Graphics g)
  {
  	 super.paintComponent(g);
  	 g.setColor(Color.BLUE);
  	 g.clipRect(0 ,0, levelWidth * 50 + 1, levelHeight * 50 + 1);
  	 
  	 for (int i=0; i<levelWidth + 1; i++)
  	 {
  	 	g.drawLine(i * 50 ,0 ,i * 50, this.getHeight());
  	 }
  	 for (int y=0; y<levelHeight + 1; y++)
  	 {
  	 	g.drawLine(0, y * 50,this.getWidth(), y * 50);
  	 }
  	 //g.drawImage(newImage, tileX, tileY, null);
  	 //int count = getNewCount();
  	 for(int a=0; a<levelWidth; a++)
  	 {
  	 	for(int b=0; b<levelHeight; b++)
  	 	{
  	 		if(imageCopy[a][b] != null)
  	 		{
  	 			g.drawImage(imageCopy[a][b], tileXPos*50, tileYPos*50, null);
  	 		}
  	 	}
  	 }
  	
  	 	//g.drawImage(imageCopy[tileXCopy][tileYCopy], tileXCopy, tileYCopy, null);
  	 	//System.out.println("COUNTER: "+count);
  	 	//System.out.println("A      : "+a);
  	
  	 
  }
  
     
  
  public Dimension getPreferredSize()
  {
  	return new Dimension (levelWidth * 50 + 1, levelHeight * 50 + 1);
  }
}
 

Wildcard

Top Contributor
Hab deinen code jetzt nur überflogen, aber müsste das:
Code:
      for(int a=0; a<levelWidth; a++) 
      { 
         for(int b=0; b<levelHeight; b++) 
         { 
            if(imageCopy[a][b] != null) 
            { 
               g.drawImage(imageCopy[a][b], tileXPos*50, tileYPos*50, null); 
            } 
         } 
      }

nicht so aussehen:
Code:
      for(int a=0; a<levelWidth; a++) 
      { 
         for(int b=0; b<levelHeight; b++) 
         { 
            if(imageCopy[a][b] != null) 
            { 
               g.drawImage(imageCopy[a][b], a*50, b*50, null); 
            } 
         } 
      }
?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bilder effizient speichern/serialisieren Spiele- und Multimedia-Programmierung 10
A Bilder(BMP) speichern Spiele- und Multimedia-Programmierung 2
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
M Bilder werden unscharf angezeigt Spiele- und Multimedia-Programmierung 5
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
beatles Minesweeper - keine Bilder Spiele- und Multimedia-Programmierung 3
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
O Bilder senden TV über DLNA? Spiele- und Multimedia-Programmierung 0
T Bilder Elegant darstellen... Spiele- und Multimedia-Programmierung 7
T Bilder einbinden, bzw. ändern Spiele- und Multimedia-Programmierung 5
M Bilder in Java Spiele- und Multimedia-Programmierung 7
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
B Bilder in GUI ändern ohne repaint() Spiele- und Multimedia-Programmierung 6
T Spielautomat bilder vergleichen Spiele- und Multimedia-Programmierung 34
A Bilder werden nicht geladen Spiele- und Multimedia-Programmierung 6
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
A Bilder (auf JPanels) auf komplette Zellengröße (GridBagLayout) skalieren Spiele- und Multimedia-Programmierung 2
I Bilder aus Quaxli's Tutorial Spiele- und Multimedia-Programmierung 3
A bilder performant und unhässlich skalliert darstellen? Spiele- und Multimedia-Programmierung 10
A 2 Bilder übereinander legen Spiele- und Multimedia-Programmierung 15
J 2D-Bilder in Java3D Spiele- und Multimedia-Programmierung 4
S Bilder zuscheiden - Werte von php übergeben Spiele- und Multimedia-Programmierung 7
D Bilder besser interpolieren Spiele- und Multimedia-Programmierung 4
F Dynamische Bilder erzeugen? Spiele- und Multimedia-Programmierung 7
R Bilder aus animierter .gif extrahieren? Spiele- und Multimedia-Programmierung 4
C jpg.Bilder teilen/bearbeiten für Puzzle Spiele- und Multimedia-Programmierung 7
A Bilder bewegen Spiele- und Multimedia-Programmierung 2
M Bilder verzerren [Rechteck -> Trapez] Spiele- und Multimedia-Programmierung 4
K Bilder drehen Spiele- und Multimedia-Programmierung 5
A Bilder flackern Spiele- und Multimedia-Programmierung 5
T Gekachelte Bilder darstellen Spiele- und Multimedia-Programmierung 2
C Speichern von Daten mit Mysql Spiele- und Multimedia-Programmierung 4
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
Devil0s 2D Stadt Generator/2D Welt speichern OHNE Tiles Spiele- und Multimedia-Programmierung 5
N [SLICK] Rectangle in Array Speichern Spiele- und Multimedia-Programmierung 3
M MJPEG Stream aufnehmen (Speichern und von VirtualDub weiterverarbeiten lassen). Spiele- und Multimedia-Programmierung 2
A Speichern un Laden mit Serializable Spiele- und Multimedia-Programmierung 4
B Daten speichern: Reflexion vs Serializable Spiele- und Multimedia-Programmierung 8
A PNG pixelweise/blockweise speichern? Spiele- und Multimedia-Programmierung 2
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
Y Jede Aktion sofort speichern Spiele- und Multimedia-Programmierung 5
aze Java 3D : 3D Objekte speichern und später wieder einlesen Spiele- und Multimedia-Programmierung 9
H Speichern und Öffnen von einem Zeichenprogramm Spiele- und Multimedia-Programmierung 4
S benutzerdefiniertes Tileset in Datei speichern Spiele- und Multimedia-Programmierung 3
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
M Jpanel Graphik speichern Spiele- und Multimedia-Programmierung 6
H Jpeg Bildinformation in ein Char Array speichern? Spiele- und Multimedia-Programmierung 4
U JPG in größe ändern und speichern Spiele- und Multimedia-Programmierung 3
G highscore in *.dat speichern! Spiele- und Multimedia-Programmierung 8
S Inhalt von Canvas3D als jpg - File speichern Spiele- und Multimedia-Programmierung 2
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10

Ähnliche Java Themen

Neue Themen


Oben