【发布时间】:2011-04-18 02:11:22
【问题描述】:
Java API 中是否有任何内置方法可以让我调整多边形的大小?
编写我自己的方法会是一项相当简单的任务,还是已经有其他方法了?
【问题讨论】:
Java API 中是否有任何内置方法可以让我调整多边形的大小?
编写我自己的方法会是一项相当简单的任务,还是已经有其他方法了?
【问题讨论】:
不,没有任何内置功能,尽管如此,当您绘制多边形时,您可以使用可以为您缩放多边形的变换矩阵来绘制多边形。 (或旋转、倾斜等)。
见
Graphics2D.setTransform(transform);
假设您在 JPanel 中绘制多边形,并且您已经覆盖了 JPanel 的 paintComponent 方法。将 Graphics 对象转换为 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 方法中设置转换矩阵,但我在这里展示了如何做到这一点。
另请注意,这将移动多边形,您可能希望将其应用于变换:
这样,对象不会移动它只是缩放。
【讨论】:
是的,@987654321@ 将创建任何Shape 的转换副本(可能是Polygon 或Path2D。)
【讨论】: