我想通过使用四个角的点作为参数将图像绘制为四边形。 Java是否已经为此内置任何东西?我看过类似的文章,但是给出的解决方案似乎并没有达到我的要求。函数调用如下所示:
wall.drawTexture(Point topLeft, Point topRight, Point bottomLeft, Point bottomRight);
我的墙类已经包含属性“ 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
和相关类中,您可以在其中操纵图形上下文的各个方面(例如,剪切,模糊等)。