Graphics2D - Isometrie

Federhalter

Mitglied
Hallo,

ich habe ein Spielfeld 16x16 Kacheln mit 32x32 großen Kacheln zeichnen lassen,was auch geht. Jetzt möchte ich das gesamte Feld um 45 Grad drehen und mit doppelter breite skalieren. Das geht auch,ABER es kommt zu zeichenfehlern und die nun isometrischen Kachel werden zum Teil mit weißen Zwischenräumen angezeigt.

Wie bekommt man das sauberer hin?
 

melmager

Erfahrenes Mitglied
klingt für mich nach einem Rechenfehler.
<wilde Spekulation>
Feld 1 Seite a: Position 0 bis 31 ; Feld 2 Seite a : Position 32 bis 63
verdoppelt:
Feld 1 Seite a: Position 0 bis 62 ; Feld 2 Seite a : Position 64 bis 126

Ergebnis: Normalfall berühren sich die Seiten, bei Verdoppelung klafft eine Lücke von 2 Pixel.
</wilde Spekulation>

aber ohne Code - null Plan :(
 

Federhalter

Mitglied
Hier die render Methode:

Java:
public void paintComponent(Graphics g) {
        super.paintComponents(g);
       
        Graphics2D g2 = (Graphics2D) g;
       
        AffineTransform at = new AffineTransform();
        at.setToTranslation(600,0);
        g2.transform(at);
        at.setToScale(2, 1);
        g2.transform(at);
        at.setToRotation(Math.toRadians(45));
        g2.transform(at);
        at.setToRotation(Math.toRadians(45));
       
        for(int x = 0;x<width;x++) {
            for(int y = 0;y<height;y++) {
                g2.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
                g2.fill(new Rectangle2D.Double(x*32,y*32,32,32));
            }
        }
    }
 

Neue Beiträge