Zur Maus zoomen / Fehler bei Bilddarstellung

TheAnfänger

Mitglied
Hallo Leute,

ich probiere momentan ein kleines 2D-Spiel zu programmieren. In diesem sollte man unter anderem auch zoomen können. Das zoomen an sich funktioniert auch aber leider zoomt es immer zum Nullpunkt:confused:.
Beim zoomen habe ich aber noch ein anderes Problem festgestellt: zwischen den Einzelbildern gibt es je nach Zoomstufe weisse Striche. (siehe Screenshots)Screenshot (15).png Screenshot (16).png
Mein aktueller/relevanter Code:
Java:
public class Game {
private void zoomTo(int x, int y) {
        if (Vars.mouseWheelMoved != 0) {
            float zoomBefore = Vars.zoom;
            if (Vars.zoom - Vars.mouseWheelMoved * 0.1f < 0.1f) {
                Vars.zoom = 0.1f;
            } else if (Vars.zoom - Vars.mouseWheelMoved * 0.1f > 5.f) {
                Vars.zoom = 5.f;
            } else {
                Vars.zoom -= Vars.mouseWheelMoved * 0.1f;
            }
            Vars.mouseWheelMoved = 0;
        }
    }
    public void render(Graphics g) {
        // map
        scaledImages = new Image[images.length];
        for (int i = 0; i < images.length; i++) {
            Image im = images[i];
            scaledImages[i] = Utils.zoomImage(im);
        }
        if (Vars.map != null) {
            for (int i = 0; i < Vars.map.length; i++) {
                for (int j = 0; j < Vars.map[i].length; j++) {
                    g.drawImage(scaledImages[Vars.map[i][j]], (int) ((j * 64 - Vars.cameraX) * Vars.zoom),
                            (int) ((i * 64 - Vars.cameraY) * Vars.zoom), null);
                }
            }
        }
    }
}

Für das Zoomen zu Maus habe ich mir überlegt, dass man einfach bei zoomX und zoomY was dazuaddieren muss. Was genau weiss ich leider nicht, habe aber einiges ausprobiert. (Hat leider nie geklappt:()

Und ich verstehe nicht warum zwischen ein paar Einzelbldern ein Abstand ist. Wenn der Abstand zwischen allen Bildern wäre könnte ich das ja noch verstehen, aber so?

Hoffe jemand von euch kann mir helfen.

~Der Anfänger
 

AndyJ

Bekanntes Mitglied
Das sind ja gleich zwei Fragen ;o)

1. Wenn du zoomst, verschiebt sich ja der Punkt ueber dem die Maus ist auch nach rechts unten. Diese Differenz musst du berechnen und das Gesamtbild nach oben und links schieben, dann sieht es so aus als wuerde um die Mausposition gezoomt werden.

2. Die weissen Linien enstehen ziemlich sicher durch Rundungsfehler. Dein Zoomfactor ist ja ein float, das Graphics-object erwartet aber int fuer die Position genauso wie Image width und height int sind. Du musst die Groesse des Image auf int runden und den gerundeten Factor auch fuer die Position verwenden, dann sollte es klappen.

Cheers,
Andy
 

TheAnfänger

Mitglied
Erstmal Entschuldigung für die späte Antwort, hatte in den letzten Tagen anderes zu tun.

1. Wenn du zoomst, verschiebt sich ja der Punkt ueber dem die Maus ist auch nach rechts unten. Diese Differenz musst du berechnen und das Gesamtbild nach oben und links schieben, dann sieht es so aus als wuerde um die Mausposition gezoomt werden.
Danke! Das war die (eigentlich einfache) Idee auf die ich nicht gekommen bin!

2. Die weissen Linien enstehen ziemlich sicher durch Rundungsfehler. Dein Zoomfactor ist ja ein float, das Graphics-object erwartet aber int fuer die Position genauso wie Image width und height int sind. Du musst die Groesse des Image auf int runden und den gerundeten Factor auch fuer die Position verwenden, dann sollte es klappen.
Ich glaube das könnte dann zu anderen Berechnungsfehlern führen, z. B. bei der exakten Mausposition. Ich habe das Problem jetzt erstmal so gelöst, dass bei der Bildbreite/-höheberechnung immer aufgerundet wird. Auch nicht wirklich schön, aber es funktioniert.
 

TheAnfänger

Mitglied
Hätte übrigens noch eine weiteres Problem:

Wenn ich der Zeichenfläche JButtons hinzufüge, funktioniert der KeyListener nicht mehr. MouseListener hingegen funktionieren weiterhin. Weiss da jemand eine Antwort?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Isometrische Tileauswahl mit der Maus Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
CptK Klassen mouseClicked wird nicht aufgerufen, während man die Maus bewegt Java Basics - Anfänger-Themen 4
D Wie frage ich ab ob die Linke maus Taste gedrückt wurde? Java Basics - Anfänger-Themen 3
M Graphics2D Objekt mir der Maus erstellen Java Basics - Anfänger-Themen 5
J GridPane per Maus Zelle bekommen, wie? Java Basics - Anfänger-Themen 4
N Erkennen ob Linkshänder Maus Java Basics - Anfänger-Themen 4
C [Greasmonkey] Maus Coursor position setzen Java Basics - Anfänger-Themen 1
S Maus soll Programm nicht verlassen Java Basics - Anfänger-Themen 1
P mousevents bei Maus und touchscreen reagieren unterschiedlich Java Basics - Anfänger-Themen 1
X Weg der Maus in px Java Basics - Anfänger-Themen 1
L Maus Click Simulation Java Basics - Anfänger-Themen 5
J Windows Maus-Zeigerbeschleunigung aktivieren/deaktivieren - Mit Java möglich? Java Basics - Anfänger-Themen 2
S Maus Position Java Basics - Anfänger-Themen 6
S java ruckelnde maus Java Basics - Anfänger-Themen 8
E Y-Position der Maus nehmen Java Basics - Anfänger-Themen 5
K Bild mit Maus innerhalb eines Rahmens bewegen Java Basics - Anfänger-Themen 5
T problem mit der maus in BlueJ Java Basics - Anfänger-Themen 14
Nicer Maus Events Java Basics - Anfänger-Themen 2
J SuM.kern.Maus gibt null obwohl initialisiert Java Basics - Anfänger-Themen 3
J den x und y Wert beim klicken der Maus ermitteln Java Basics - Anfänger-Themen 2
R Objekt mit Maus auswählen und verschieben Java Basics - Anfänger-Themen 2
S Koordinaten der Maus wiedergeben Java Basics - Anfänger-Themen 6
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
Hamstinator Fenster mit Maus verschieben Java Basics - Anfänger-Themen 2
B Hilfe: Tastatureingaben werden erst nach der Maus angenommen Java Basics - Anfänger-Themen 3
C Scroll per Maus Java Basics - Anfänger-Themen 2
O Maus / Pixel Position bei mir und bei anderen. Java Basics - Anfänger-Themen 8
B träge Maus Java Basics - Anfänger-Themen 2
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
F Maus fangen Java Basics - Anfänger-Themen 9
A grafik 2d Objekte mit der Maus bewegen Java Basics - Anfänger-Themen 4
H Objekt mit Maus verschieben Java Basics - Anfänger-Themen 4
A Maus positionserkennung zu langsam Java Basics - Anfänger-Themen 4
G Maus mit java bewegen Java Basics - Anfänger-Themen 6
N Applet ruckelt solange Maus nicht in Bewegung? Java Basics - Anfänger-Themen 3
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
G nicht Quadratischer Maus-Klickbereich Java Basics - Anfänger-Themen 6
M Fokus mit Maus und Tastatur Java Basics - Anfänger-Themen 5
T eine zusätzliche Virtualle Maus Java Basics - Anfänger-Themen 11
E Mit der Maus Zeichenen Java Basics - Anfänger-Themen 5
DEvent Maus deaktivieren und exklusiv nur für das Hauptfenster Java Basics - Anfänger-Themen 5
E Kreis in Frame ,den man mit der Maus versetzen kann? Java Basics - Anfänger-Themen 2
B Button - auf Maus reagieren Java Basics - Anfänger-Themen 16
G Buttons mit der Maus nicht anklickbar Java Basics - Anfänger-Themen 8
B Probleme mit der maus Java Basics - Anfänger-Themen 4
M Maus und Tastatur Java Basics - Anfänger-Themen 5
G Maus+Tastatur aktionen simulieren? Java Basics - Anfänger-Themen 5
D Maus steuern Java Basics - Anfänger-Themen 9
S Bilder zoomen Java Basics - Anfänger-Themen 0
T jpeg Bilder zoomen.. Java Basics - Anfänger-Themen 2
C Java-Anwendung im Browser zoomen Java Basics - Anfänger-Themen 1
L Jscrollpane nach zoomen anpassen Java Basics - Anfänger-Themen 20
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
K Zoomen eines Bildes! Java Basics - Anfänger-Themen 8
L Batik (Zoomen auf einen Buttonklick) Java Basics - Anfänger-Themen 3
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben