Java swing如何用4个点画一个四边形的图像

Java swing how to draw an image as a quadrilateral by using 4 points

我想通过使用4个角的点作为参数将图像绘制为四边形。 Java 是否已经为此内置了任何内容?我见过类似的 post 但给出的解决方案似乎没有达到我想要的效果。函数调用如下所示:

wall.drawTexture(Point topLeft, Point topRight, Point bottomLeft, Point bottomRight);

我的墙 class 已经包含属性“BufferedImage 纹理”。

上下文:我正在做一个 raycaster 引擎。我可以将我的图像分成更小的列以对应 3D 视图上的像素列,但纹理完整性不是很高。我认为仅使用第一条和最后一条光线照射同一个墙面并转换为平行四边形就可以解决我的问题。它也可能比逐列绘制更快。

你可以使用 drawLine。它在 1-2、1-3、4-2、4-3 之间画一条线。

我只能建议您考虑以下事项:

paintComponent(Graphics g) {
     super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;
    // Rendering hints can visually smooth out the graphics with
    // anti aliasing.
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
}

其他可能性是查看 AffineTransform 和相关的 类,您可以在其中操作图形上下文的各个方面(例如剪切、模糊等)。