2014-02-11 40 views
2

我正在尝试在JPanel中创建一个形状,并且随着JPanel增加和减小形状的大小也相应地发生变化。如何根据窗口大小缩放对象?

protected void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawLine(0,100,50,0); 
    } 

我的问题是,我不知道如何使用的东西沿着this.getHeight()或this.getLength()的行缩放。

回答

2

假设你的意思是你要保持一个比例比组件大小的变化......

有几个方法可以做到这一点...

你可以通过确定“默认”启动值,也就是说,如果“首选”宽度为200,则线起点将为宽度的50%,而终点将为宽度的25%。

这将允许你这样做......

int width = getWidth(); 
int x1 = (int)(Math.round(width * 0.5d); 
int x2 = (int)(Math.round(width * 0.25d); 
g.drawLine(0, x1, x2, 0); 
3

除了通过@MadProgrammer列出的路径,还有我能想到的提升图形另外两种方式。

摆动组件通常可以依赖于实际上是对象的Graphics对象。

  1. 然后我们可以使用Graphics2D.scale(sx,sy)
  2. AffineTransform(使用getScaleInstance(sx,sy)。拉伸前将其设于Graphics2D获得。

使用任一种方法的水垢例如,如所需要的原始坐标将被缩小。

相关问题