你好,我是affineTransform
java新手。我想用它来剪切一些我以后必须使用的 GUI。现在我只想测试一个示例代码,但我无法解释它的输出。这是代码
package main;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass{
public static void main(String[] args) {
JFrame jf = new JFrame("Demo");
jf.getContentPane().add(new MyCanvas());
jf.setSize(600, 600);
jf.setVisible(true);
}
}
class Left extends JPanel {
Left(){
setPreferredSize(new Dimension(450,450));
setBorder(BorderFactory.createLineBorder(Color.green));
setBackground(Color.gray);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
AffineTransform at = new AffineTransform();
g2.setTransform(at);
g2.drawRect(getWidth()/2 - 10, getHeight()/2 - 10, 20, 20);
}
}
class MyCanvas extends JPanel {
MyCanvas()
{
setBorder(BorderFactory.createLineBorder(Color.red));
setLayout(new FlowLayout(FlowLayout.CENTER));
add(new Left());
}
}
我想在Left
课堂展示中绘制的矩形出现在中间对吗??但是它的到来向左移动了。它似乎是相对于外部框架的坐标。如果我删除g2.setTransform(at);
它会正常..你能解释一下为什么吗?