绘图线的Java区域

绘图线的Java区域,java,area,Java,Area,Java似乎没有任何获取已绘制像素的方法。我知道java使用某些算法在屏幕上绘制几何图元。我试图做的是接收这些被绘制到的像素,并将它们放置到一个区域中。我这样做的原因是因为我想剪裁绘制到的区域,以便可以为指定区域设置动画并绘制texturepaint。我的程序使用抽象动作动态更改texturepaint的尺寸。例如,我在抽象动作中有一个特定的操作,使一幅海洋般的纹理画在潮汐中起伏 编辑:My TextureAnimation类快速更改texturepaint的类型并重新绘制目标组件。如果我在没有

Java似乎没有任何获取已绘制像素的方法。我知道java使用某些算法在屏幕上绘制几何图元。我试图做的是接收这些被绘制到的像素,并将它们放置到一个区域中。我这样做的原因是因为我想剪裁绘制到的区域,以便可以为指定区域设置动画并绘制texturepaint。我的程序使用抽象动作动态更改texturepaint的尺寸。例如,我在抽象动作中有一个特定的操作,使一幅海洋般的纹理画在潮汐中起伏

编辑:My TextureAnimation类快速更改texturepaint的类型并重新绘制目标组件。如果我在没有剪切的情况下进行绘制,它只会用我的texturepaint充斥整个世界,但是通过剪切,我可以告诉java使用设置的剪切区域重新绘制整个矩形,它只会将texturepaint重新绘制到指定的区域

已解决:虽然我仍然无法接收绘制到的像素区域,但我仍然可以使用平行颜色贴图捕获碰撞检测。我发现,如果结合设置Graphics2D.setComposite(AlphaComposite.SrcIn)这样的图形组合,就可以实现这一点。调用此方法只允许对BuffereImage的不透明像素进行绘制。我希望这能帮助其他遇到类似问题的人

public class TextureAnimation implements ActionListener {

private Action behavior;
private BufferedImage image;
private Component host;

private TexturePaint paint;
private Timer t;

public int x;
public int y;

public TextureAnimation(Action a, BufferedImage i, Component c){

    behavior = a;
    image = i;
    host = c;

    paint = new TexturePaint(image, new Rectangle(0, 0, image.getWidth(),    image.getHeight()));

    t = new Timer(300, this);
    t.setInitialDelay(0);


}

public void playAnimation(){

    t.start();

}

public void delayAnimation(int ms_delay){

    t.setInitialDelay(ms_delay);
    t.restart();

}

public void setIntervalDelay(int ms_delay){

    t.setDelay(ms_delay);

}

public void setTilePosition(int x, int y){

    paint = new TexturePaint(image, new Rectangle(Gscale.setX(x), Gscale.setY(y), Gscale.setWidth(image.getWidth()), Gscale.setHeight(image.getHeight())));

}

public TexturePaint animatedPaint(){

    return paint;

}

@Override
public void actionPerformed(ActionEvent e) {

    behavior.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
    host.repaint(0,0, host.getWidth(), host.getHeight());
    }

}

你的代码是什么?它产生了什么?@La comadreja,这是一个否决投票的可怕理由。问题只是问是否有一种方法可以满足他的需求。这似乎是个可靠的问题。你希望在他的代码中看到什么?我希望看到他试图做什么,以及他是如何进行操作的。@La comadreja换句话说,我希望将我画到组件上的任何东西作为一个区域,以便我可以剪辑它以重新绘制纹理油漆。因此,为了说明,你大致需要1。例如,用
g.drawRect(x,y,w,h)
和2来绘制某物。作为
区域
对象获取受此绘图操作影响的所有像素。是这样吗?如果这是你的意思:这可能是一个麻烦。您应该考虑使用<代码>形状>代码>对象进行绘图,因为它们可以很容易地直接转换成<代码>区域< /代码>对象。