Comment mettre en miroir une image avec Java.awt


J'ai une mission à faire en Java, et je ne peux pas comprendre cela pour la vie de moi. Je suis censé utiliser Graphics2D et Java.AWT. pour refléter une image sur l'axe des abscisses et l'axe des ordonnées.

Le code actuel est:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
public class DrawingImages
{
private Picture newCanvas = null;
private Graphics g = null;
private Graphics2D g2 = null;
private Picture pic1 = null;
private Picture pic2 = null;
private Color color = null;
private Pixel sourcePixel, targetPixel = null;
private Color sourceColor, targetColor = null;

DrawingImages(Picture canv, Color col)
{
    Picture sourcePicture = new Picture("WashingtonMonument.jpg");
    newCanvas = canv;
    newCanvas.setAllPixelsToAColor(Color.BLACK);
    for(int y = sourcePicture.getHeight()-1; y >0; y=y-1)
    {
        for(int x = sourcePicture.getWidth() - 1; x > 0; x = x - 1)
        {
            sourcePixel = sourcePicture.getPixel(x,y);
            sourceColor = sourcePixel.getColor();
            targetPixel = newCanvas.getPixel(x+sourcePicture.getWidth() -1,y+sourcePicture.getHeight()- 1);
            targetPixel.setColor(sourceColor);         
        }
    }


    g = newCanvas.getGraphics();
    g2 = (Graphics2D)g;  
}

}

Author: John Garza, 2012-09-15

1 answers

De quoi dérive l'image? Image? Si c'est le cas, vous pouvez utiliser Image.scale(-1, -1) pour refléter directement l'image.

Sinon, vous pouvez utiliser un AffineTransform.getScaleInstance(-1, -1) directement sur le contexte Graphics, mais vous devrez traduire la position de l'image

Vous pouvez également jeter un oeil à AffineTransform.rotate () - comment puis-je xler, faire pivoter et mettre à l'échelle en même temps?, qui utilise cette technique

 2
Author: MadProgrammer, 2017-05-23 11:44:03