【发布时间】:2016-07-06 23:46:26
【问题描述】:
我需要最简单的方法来重新缩放 java 中的图形(例如矩形......)。我找到了一种“拉伸”它们的方法:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.Dimension;
public class Stretch extends JFrame {
int originalHeight = 600;
int originalWidth = 600;
public Stretch() {
super("Stretch");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(originalWidth, originalHeight);
}
public static void main(String[] args) {
Stretch s = new Stretch();
s.setVisible(true);
}
public void paint(Graphics g) {
Dimension size = this.getBounds().getSize();
int rectWidth = 100;
int rectHeight = 130;
g.setColor(Color.white);
g.fillRect(0, 0, size.width, size.height);
g.setColor(Color.black);
g.drawRect(100, 100, rectWidth + size.width - originalWidth, rectHeight + size.height - originalHeight);
}
}
如你所见,公式是这样的:
g.drawRect(100, 100, rectWidth + size.width - originalWidth, rectHeight + size.height - originalHeight);
现在如何重新缩放绘图?宽度和高度必须保持相同的比例。 谢谢。
【问题讨论】:
-
我不确定这幅画是什么。是长方形吗?还是矩形只是更复杂绘图的占位符?
-
不管怎样,如果你想缩放矢量图如问题的矩形,又想保持比例,只需通过保持比例重新计算目标尺寸:先计算比例,然后选择一个宽度(或高度)并将其乘(或除)以得到另一个维度。
-
最简单的方法是使用
Rectangle或Rectangle2D并简单地对其应用缩放的AffineTransform。否则,您可以缩放属性或Graphics上下文 -
对于shape resizing example、
Graphicsscaling 或者如果你真的很冒险this example -
鉴于对我的回答的评论,问题显然不是关于重新缩放绘图,而是关于计算一些值以使其看起来像你想要的那样。更清楚一点。