我正在尝试在JPanel中创建一个形状,并且随着JPanel增加和减小形状的大小也相应地发生变化。如何根据窗口大小缩放对象?
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(0,100,50,0);
}
我的问题是,我不知道如何使用的东西沿着this.getHeight()或this.getLength()的行缩放。
我正在尝试在JPanel中创建一个形状,并且随着JPanel增加和减小形状的大小也相应地发生变化。如何根据窗口大小缩放对象?
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(0,100,50,0);
}
我的问题是,我不知道如何使用的东西沿着this.getHeight()或this.getLength()的行缩放。
假设你的意思是你要保持一个比例比组件大小的变化......
有几个方法可以做到这一点...
你可以通过确定“默认”启动值,也就是说,如果“首选”宽度为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);
除了通过@MadProgrammer列出的路径,还有我能想到的提升图形另外两种方式。
摆动组件通常可以依赖于实际上是对象的Graphics
对象。
Graphics2D.scale(sx,sy)
。AffineTransform
(使用getScaleInstance(sx,sy)
。拉伸前将其设于Graphics2D
获得。使用任一种方法的水垢例如,如所需要的原始坐标将被缩小。