在Java中调整表单对象的大小

时间:2009-12-16 23:43:27

标签: java forms applet

我有一个Java applet,它是一个在其中绘制形状的表单(Rect,Oval,Line)。 每个形状由2个点表示,可以将自己绘制成形状。 当JApplet表单调整大小时,我还需要在保持宽高比的同时调整形状大小。

我没有找到解决此问题的高质量解决方案。

尝试从中编写解决方案,但在测试时它变得很糟糕,有人可以发布一个示例代码吗?

1 个答案:

答案 0 :(得分:0)

你没有提供任何细节,但我猜测当你缩放对象移动和缩放时。您需要了解有关图形转换的知识。主要有两种方法:

  • 通过缩放坐标来调整对象的大小

  • 将变换矩阵应用于对象。这可能是更好的方式。

如果您使用的是Graphics2D(http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics2D.html),您将可以访问转换。

当您调整窗口大小时,您将需要确定哪个尺寸(宽度或高度)对比例影响最大并将其他尺寸调整为其中一个 - 这将阻止对象扩展太多。计算单个刻度并将其平均应用于X和Y.

您可能没有原点上的对象。在这种情况下,您需要执行三个操作: - 将对象转换为原点 - 重新缩放它 - 将其翻译回原来的位置

这些操作可以合并为一个矩阵。

我不能更明确,因为我不知道你的问题的细节,但这应该给你一些指示。

尝试以下示例: http://www.java2s.com/Code/Java/2D-Graphics-GUI/Linetransformationrotationshearscale.htm 这应该会向你展示一些效果。