Je dois pouvoir faire pivoter les images individuellement (en Java). La seule chose que j'ai trouvée jusqu'à présent est g2d.drawImage (image, affinetransform, ImageObserver). Malheureusement, je dois dessiner l'image à un moment donné, et il n'y a pas de méthode avec un argument qui 1.passe l'image séparément et 2. me permet de définir x et y. toute aide est appréciée
Voici comment vous pouvez le faire. Ce code suppose l'existence d'une image en mémoire tampon appelée "image" (comme le dit votre commentaire).
// The required drawing location
int drawLocationX = 300;
int drawLocationY = 300;
// Rotation information
double rotationRequired = Math.toRadians (45);
double locationX = image.getWidth() / 2;
double locationY = image.getHeight() / 2;
AffineTransform tx = AffineTransform.getRotateInstance(rotationRequired, locationX, locationY);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
// Drawing the rotated image at the required drawing locations
g2d.drawImage(op.filter(image, null), drawLocationX, drawLocationY, null);
Des instances AffineTransform
peuvent être concaténées (additionnées). Par conséquent, vous pouvez avoir une transformation combinant 'décalage vers l'origine', 'rotation' et 'retour à la position souhaitée'.
Un moyen simple de le faire sans utiliser un énoncé de tirage aussi compliqué:
//Make a backup so that we can reset our graphics object after using it.
AffineTransform backup = g2d.getTransform();
//rx is the x coordinate for rotation, ry is the y coordinate for rotation, and angle
//is the angle to rotate the image. If you want to rotate around the center of an image,
//use the image's center x and y coordinates for rx and ry.
AffineTransform a = AffineTransform.getRotateInstance(angle, rx, ry);
//Set our Graphics2D object to the transform
g2d.setTransform(a);
//Draw our image like normal
g2d.drawImage(image, x, y, null);
//Reset our graphics object so we can draw with it again.
g2d.setTransform(backup);
public static BufferedImage rotateCw( BufferedImage img )
{
int width = img.getWidth();
int height = img.getHeight();
BufferedImage newImage = new BufferedImage( height, width, img.getType() );
for( int i=0 ; i < width ; i++ )
for( int j=0 ; j < height ; j++ )
newImage.setRGB( height-1-j, i, img.getRGB(i,j) );
return newImage;
}
de https://coderanch.com/t/485958/Java/Rotating-buffered-image