我有一个Java applet,它是一个在其中绘制形状的表单(Rect,Oval,Line)。 每个形状由2个点表示,可以将自己绘制成形状。 当JApplet表单调整大小时,我还需要在保持宽高比的同时调整形状大小。
我没有找到解决此问题的高质量解决方案。
尝试从中编写解决方案,但在测试时它变得很糟糕,有人可以发布一个示例代码吗?
答案 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 这应该会向你展示一些效果。