java中的缩放不适用于(-1,1)或(1,-1)
我试图简单地反映一下“好”这个词: 因此,我使用java中的缩放不适用于(-1,1)或(1,-1),java,graphics,Java,Graphics,我试图简单地反映一下“好”这个词: 因此,我使用g2d按y轴缩放文本。缩放(1,-1)但不缩放 我正在使用以下简单代码: @SuppressWarnings("serial") public class C extends JPanel{ JFrame frame = new JFrame(); public C(){ frame.setSize(500,500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE
g2d按y轴缩放文本。缩放(1,-1)
但不缩放
我正在使用以下简单代码:
@SuppressWarnings("serial")
public class C extends JPanel{
JFrame frame = new JFrame();
public C(){
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.setVisible(true);
}
public void paintComponent(Graphics g){
Graphics2D gr = (Graphics2D)g ;
gr.setColor(Color.BLACK);
gr.fillRect(0, 0,250, 250);
gr.setColor(Color.YELLOW);
gr.drawString("good",50,50);
gr.scale(1,-1);
gr.drawString("good",50,50);
}
public static void main(String[] args){
new C();
}
当我为值>0(例如+2)进行缩放时,缩放效果非常好。坐标系被缩放的负值改变,因此在y=50处绘制实际上是在y=-50处绘制。你可以
gr.translate(0,-100)
无论哪种方式,考虑不改变图形变换,而是使用外部变换并重置图形变换之后
AffineTransform previous = gr.getTransform();
AffineTransform newTransform = new AffineTransform(previous);
newTransform.scale(0,-1);
gr.setTransform(newTransform);
gr.setTransform(previous);