0

我正在创建一个天际线游戏作为一个有趣的辅助项目,当我开始对建筑物的墙壁进行纹理处理时遇到了麻烦,我目前只是在该区域绘制一个多边形,但我想知道是否有纹理它的方法是这样的纹理:

正方形

可以这样渲染:

正方形映射到平行四边形

这是游戏的图像,我想要纹理的部分是建筑物的灰色墙壁。

游戏画面

我知道我可以通过创建一个单独的渲染系统来逐个像素地绘制它,但我试图避免这种情况。

我的具体问题是 Java 的 Graphics 中是否存在可以实现此目的的方法或类似的方法。

4

1 回答 1

1

如果您想执行剪切变换AffineTransformation是您的解决方案。

AffineTransform at;

double shx, shy;
at.shear(shx, shy);

绘制图像时使用 AffineTransformation - 遗憾的是,您必须为此目的使用 Graphics2D 并不是很明显

@Override
public void paintComponent(Graphics g){
    Graphics2D g2d = (Graphics2D)g;
    BufferedImage img = ...;
    AffineTransform at = ...;
    g2d.drawImage(img, at, null);//null-param is the ImageObserver
    ....
}
于 2016-06-03T07:53:37.583 回答