如何在Java图形中的Path2D对象上放置图像

如何在Java图形中的Path2D对象上放置图像,java,image,textures,graphics2d,cube,Java,Image,Textures,Graphics2d,Cube,我有一个Path2D.Double()形状,我想知道如何在形状上放置图像。我正在寻找一个理想的API,可以为我做到这一点,但任何方法,是不是可笑的复杂应该是罚款 我希望绘制的形状是一个二维等距立方体(在示例代码中,立方体没有旋转,因此不是真正的等距,但这不是一个问题),如果这对任何人来说都是有用的信息,我创建我的形状如下 尝试添加一个砖状图像的png/jpg图像(我可以在两者之间转换)。我认为图像的内容并不重要 Path2D shape = new Path2D.Double(); shape.

我有一个
Path2D.Double()
形状,我想知道如何在形状上放置图像。我正在寻找一个理想的API,可以为我做到这一点,但任何方法,是不是可笑的复杂应该是罚款

我希望绘制的形状是一个二维等距立方体(在示例代码中,立方体没有旋转,因此不是真正的等距,但这不是一个问题),如果这对任何人来说都是有用的信息,我创建我的形状如下

尝试添加一个砖状图像的png/jpg图像(我可以在两者之间转换)。我认为图像的内容并不重要

Path2D shape = new Path2D.Double();
shape.moveTo(x, y);
for(int i=0; i<xcords.length;i++){
    shape.lineTo(xcords[i], ycords[i]);
}
shape.closePath();
Path2D shape=new Path2D.Double();
形状。移动到(x,y);

对于(int i=0;iYes这正是我正在尝试做的,我现在会用你的模板改进我的答案。请阅读我编辑的queston。谢谢,我会看看我是否能启动IDE,但在等待的时候……你想在图纸上放置什么图像?你能上传到你的问题中吗?这个用图像称为添加“纹理”。(可能有助于搜索答案。)在我的问题气垫船中添加了更多信息,是的,我知道威士忌:D仍然没有找到任何好的答案。是的,这正是我正在尝试做的,我现在将用你的模板改进我的答案。请阅读我编辑的问题。谢谢,我会看看我是否可以启动IDE,但在等待的时候……你想要什么图像放在图纸上?你能上传到你的问题上吗?这个用图像装饰形状的过程叫做添加“纹理”。(可能有助于搜索答案。)在我的问题气垫船上添加了更多信息,是的,我知道威士忌:D仍然没有找到任何好的答案。
import java.awt.*;
import java.awt.geom.Path2D;
import javax.swing.*;

public class Main extends JPanel {

    static int WIDTH;
    static int HEIGHT;

    Path2D shape;

    int[] xcords = {0,100,100,  0,  0,  0,  0,  0,  0,  0,100,100,  0,       0,  0,     100,100,  0,  0,100,100,100,100,100,100,  0,  0,100,   0,  0,  0};
    int[] ycords = {0,  0,100,100,  0,  0,100,100,  0,  0,  0,  0,  0,       0,100,     100,  0,  0,100,100,100,  0,  0,100,100,100,100,100, 100,  0,  0};
    int[] zcords = {0,  0,  0,  0,  0,100,100,  0,  0,100,100,  0,  0,     100,100,     100,100,100,100,100,  0,  0,100,100,  0,  0,100,100, 100,100,  0};

    public Main(){
        shape = new Path2D.Double();
        shape.moveTo(300, 300);
        for (int i=0; i<xcords.length;i++){
            xcords[i] = xcords[i] - zcords[i];
            ycords[i] = ycords[i] - zcords[i];
        }
        for (int i=0; i<xcords.length;i++){
            shape.lineTo(300+xcords[i],300+ycords[i]);
        }
        shape.closePath();
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.draw(shape);

    }
    public static void main(String[] args){
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        WIDTH = (int) screenSize.getWidth();
        HEIGHT = (int) screenSize.getHeight();
        Main main = new Main();
        JFrame frame = new JFrame();
        frame.setTitle("360 ATTACK");
        frame.setSize(WIDTH, HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setUndecorated(true);
        frame.add(main);
        frame.setVisible(true);
    }
}