如何在Java中调整AWT多边形的大小
Java API中是否有任何内置方法允许我调整多边形的大小如何在Java中调整AWT多边形的大小,java,geometry,awt,polygon,Java,Geometry,Awt,Polygon,Java API中是否有任何内置方法允许我调整多边形的大小 写我自己的方法是一件很简单的任务,还是已经有其他方法了?不,没有内置任何东西,尽管当你绘制多边形时,你可以使用一个变换矩阵来绘制多边形,它可以为你缩放多边形。(或旋转、倾斜等) 看 图形2d.设置转换(转换) 假设您正在JPanel中绘制多边形,并且已经覆盖了JPanel的paintComponent方法。将图形对象强制转换为Graphics2D对象,并根据需要使用变换对其进行缩放: public void paintComponent
写我自己的方法是一件很简单的任务,还是已经有其他方法了?不,没有内置任何东西,尽管当你绘制多边形时,你可以使用一个变换矩阵来绘制多边形,它可以为你缩放多边形。(或旋转、倾斜等) 看 图形2d.设置转换(转换) 假设您正在JPanel中绘制多边形,并且已经覆盖了JPanel的paintComponent方法。将图形对象强制转换为Graphics2D对象,并根据需要使用变换对其进行缩放:
public void paintComponent(Graphic g) {
Graphics2D g2d = (Graphics2D) g;
AffineTransform saveTransform = g2d.getTransform();
try {
AffineTransform scaleMatrix = new AffineTransform();
scaleMatrix.scale(1.5, 1.5);
//or whatever you want
g2d.setTransform(scaleMatrix);
g2d.drawPolygon(myPolygon);
} finally {
g2d.setTransform(saveTransform);
}
}
您可以在其他地方(一次)而不是在paintComponent方法中每次设置转换矩阵,但我在这里做的是演示如何进行设置
还要注意,这将移动多边形,您可能希望将其应用于变换:
- 添加平移以将多边形移动到原点
- 加一个刻度
- 添加平移以将多边形移回原始位置
通过这种方式,对象不会移动,只会进行缩放。是的,
将创建任何形状的变换副本(可能是多边形或路径2D
)我认为这可能更适合我的问题,因为我希望缩放形状以适应简单2D游戏的不同屏幕大小。这是个好主意吗?您可以添加一些关于setTransform方法如何工作的更多信息吗?