Я хочу настроить математическое (где y растет вверх, а не вниз) координатное пространство от (-1, -1) до (+1, +1) и разместить его в окне независимо от размера окна.
Я использую анонимный подкласс JComponent в Java SE 7 и привожу входящий Graphics
в paintComponent
к 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);
}
}