[JAVA] rotatieprobleem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • zezke
  • Registratie: September 2006
  • Laatst online: 22-09 13:20
Hallo iedereen,

momenteel ben ik bezig met een kaartspel te maken in Java, maar omdat ik graag de afbeeldingen zou willen roteren om het "rond-de-tafel-gevoel" te scheppen, heb ik wat problemen. Net als echte kaarten zijn m'n afbeeldingen rechthoekig van vorm en dit zorgt ervoor dat na de rotatie een deel van de afbeelding afgekapt is. Iemand een oplossing? Dit is mijn code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Graphics2D g2d = (Graphics2D) g;
        PlayingCard[] cards;
        BufferedImage im;
        for (int j = 0; j < 4; j++) {
            if(players[j].getCard()!=null){
                cards = players[j].getCard();
                for (int i = 0; i < cards.length; i++) {
                    im = cards[i].getImage();
                    //Rotate the image if necessary
                    AffineTransform at = new AffineTransform();
                    at.rotate(rotation[j], im.getWidth()/2.0, im.getHeight()/2.0);
                    AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
                    im = op.filter(im, null);
                    g2d.drawImage(im, xbase[j]+i*xverschuiving[j], ybase[j]+i*yverschuiving[j], null);
                }
            }
        }

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Ik weet hoe dat komt. Je draait je afbeeldingsframe, maar je afbeelding niet. Ook moet je per punt draaien (Sin en Cos ;) ).

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • zezke
  • Registratie: September 2006
  • Laatst online: 22-09 13:20
Hmmm het lijkt nochtans net op het omgekeerde wat jij zegt, de afbeelding gedraaid maar het frame niet. Zie de screenshot: http://img149.imageshack.us/my.php?image=screenshotq.png

Acties:
  • 0 Henk 'm!

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 12-09 11:42

EnnaN

Toys in the attic

je image is iig gedraait, maar je verhoudingen lijken wel volledig veranderd?
Ik ken alle functies die je gebruikt niet, maar weet je zeker dat het klopt wat je doet? Welke draaiformule probeer je te gebruiken, en klopt die? en zo ja, doet de functie wat je denkt dattei moet doen?

sig


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:05
Je probeert nu je bitmap plaatje te roteren, maar zo'n plaatje blijft altijd rechthoekig natuurlijk. Je zou iets kunnen doen als je plaatje vierkant maken, de kaart in het midden zetten en de rest transparant maken, dan kun je in ieder geval over hoeken van 90 graden roteren, maar dat blijft gehannes als je over andere hoeken wil roteren (dan heb je weer een grotere rand nodig).

Gelukkig is er ook een betere en veel simpelere manier: laat je plaatje ongemoeid en teken 'm gewoon geroteerd, door een affiene transformatie mee te geven aan drawImage.

[ Voor 0% gewijzigd door Soultaker op 11-04-2009 16:47 . Reden: linkje gefixt ]


Acties:
  • 0 Henk 'm!

  • zezke
  • Registratie: September 2006
  • Laatst online: 22-09 13:20
Hartelijk bedankt voor de hulp, jouw manier was net wat ik zocht. Voor de geïnteresseerden de uiteindelijke code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
        for (int j = 0; j < 4; j++) {
            if(players[j].getCard()!=null){
                cards = players[j].getCard();
                for (int i = 0; i < cards.length; i++) {
                    im = cards[i].getImage();
                    //Rotate the image if necessary
                    AffineTransform at = new AffineTransform();
                    at.rotate(rotation[j], im.getWidth()/2.0, im.getHeight()/2.0);
                    BufferedImageOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
                    g2d.drawImage(im, op, xbase[j]+i*xverschuiving[j], ybase[j]+i*yverschuiving[j]);
                }
            }
        }
Pagina: 1