Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java.awt镜像映像_Java_Image_Awt_Graphics2d - Fatal编程技术网

如何使用Java.awt镜像映像

如何使用Java.awt镜像映像,java,image,awt,graphics2d,Java,Image,Awt,Graphics2d,我有一个任务要用Java来完成,我一辈子都搞不懂。我应该使用Graphics2D和Java.AWT。在x轴和y轴上镜像图像 目前的代码是: import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Color; public class DrawingImages { private Picture newCanvas = null; private Graphics g = null; private Graph

我有一个任务要用Java来完成,我一辈子都搞不懂。我应该使用Graphics2D和Java.AWT。在x轴和y轴上镜像图像

目前的代码是:

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;  
}

}

图片来源于什么<代码>图像?如果是这样,您可以使用
Image.scale(-1,-1)
直接镜像图像

如果没有,您可以直接在
图形
上下文中使用
仿射Transform.getScaleInstance(-1,-1)
,但您必须转换图像的位置


您还可以查看使用此技术的用户

您当前的代码到底有什么问题?你能正确地读入源图片吗?你可以创建一个目标图片,但镜像是错误的?它不会创建镜像。它正确地读取源图像,并将其放在画布上,但不是以镜像方式,我不想给出答案。但是假设你的源图片有一个x=4,y=2的像素。目标图片中对应的像素是什么?(你需要知道图片的宽度和高度。)你能从这个特定的例子中找出一个通用的公式吗?如果x=4,它将是4+sourcePicture.getWidth(),因此如果宽度是200,新的x坐标将是204-1,所以最终的答案是203。同样的事情也发生在y身上,只需要正确的数字,所以让我们使用一张200x200的图像,它将位于画布上的203203处。也许我误解了你的问题,但这对我来说似乎不正确。我猜你把目标图像放在同一块画布上,在不同的位置?如果有必要,在纸上用图表仔细检查你的数学。使用Image.scale(-1,-1)或在我的例子中,newCanvas.scale(-1,-1)或sourcePicture.scale(-1,-1)表示找不到isOkay的比例,所以直接在
图片上使用
仿射Transform.getScaleInstance
newCanvas.getGraphics()