-1
我想设置一个从(-1,-1)到(+1,+1)的数学坐标(其中y不增长),并使其适合窗口不管窗口大小如何。如何在Graphics2D中设置所需的坐标
我正在使用的Java SE 7的匿名JComponent的子类和铸造在paintComponent
传入Graphics
到Graphics2D
,然后在Graphics2D
但Graphics2D
绘图设置为计算机坐标与大小的变化空间窗户。如何根据窗口大小重新调整它,并让Y向上?以下程序应在右上象限中显示一个黑色方块。
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class G {
public static void main (String [] args) {
JFrame frame = new JFrame(G.class.getCanonicalName());
frame.setUndecorated(true);
JComponent component = new JComponent() {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent (Graphics g) {
super.paintComponent(g);
paint2D((Graphics2D)g);
}
protected void paint2D (Graphics2D g2) {
g2.draw(new Rectangle2D.Double(0.1, 0.1, 0.9, 0.9));
}
};
frame.add(component);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
谢谢,但我不知道如何做到这一点。我应该使用getWidth()和getHeight()使[[-1,+ 1]'区间适合每个维度吗?我如何翻转?我不熟悉矩阵。有没有创建翻转转换的方法?或者我旋转两次?它本质上是具体的方法和供应的参数,我期待。 – necromancer 2013-05-14 02:22:14
是的,我编辑了答案来提供一个例子。 – 2013-05-14 02:23:12
谢谢,但它没有奏效。早些时候,我曾经像预期的那样在左上角出现一个小点。现在没有什么...... upvoted,但没有解决在右上象限中显示矩形的问题。 – necromancer 2013-05-14 02:32:28