Java 摆动问题:在pdf图像上绘制矩形,并在放大和缩小时保持其大小和位置一致
关于Swing,我有一个相当紧迫的问题,我已经很多年没有接触过这个问题了 我有一个代码,允许用户在pdf文档上绘制不同的矩形(包含在Java 摆动问题:在pdf图像上绘制矩形,并在放大和缩小时保持其大小和位置一致,java,swing,Java,Swing,关于Swing,我有一个相当紧迫的问题,我已经很多年没有接触过这个问题了 我有一个代码,允许用户在pdf文档上绘制不同的矩形(包含在JPanel中)。我画它们,移动它们,调整它们的大小,选择它们,甚至在它们上面写文本。我不能做的是在缩放文档时保持它们的一致性。随着文档变大,我绘制的矩形保持在相同的位置和大小 我想知道是否有一个相对简单的逻辑来跟踪缩放级别,最重要的是,相应地更新矩形。我可以检索缩放因子,它是一个浮点,但不幸的是,我使用的是矩形对象,它使用int表示x,y,高度和宽度。将其转换为R
JPanel
中)。我画它们,移动它们,调整它们的大小,选择它们,甚至在它们上面写文本。我不能做的是在缩放文档时保持它们的一致性。随着文档变大,我绘制的矩形保持在相同的位置和大小
我想知道是否有一个相对简单的逻辑来跟踪缩放级别,最重要的是,相应地更新矩形。我可以检索缩放因子,它是一个浮点,但不幸的是,我使用的是矩形
对象,它使用int
表示x
,y
,高度
和宽度
。将其转换为Rectangle.Float
,会很麻烦,我想把它保存起来,以备不时之需
我尝试过使用仿射变换
,但我对它不太熟悉,因为某种原因,我得到了y
的错误坐标。谁能向我解释一下:
AffineTransform
是最好的方法,我应该如何处理它(可能有一个链接指向一个好的解释,如果是-我找不到它)图形对象G的变换T
scale
是要缩放的值:
@Override
protected void paintComponent(Graphics gr){
super.paintComponent(gr);
Graphics2D g = (Graphics2D)gr;
AffineTransform prevTransform = g.getTransform();
AffineTransform at = new AffineTransform(prevTransform);
at.scale(scale, scale);
g.setTransform(at);
g.drawRect(...);
g.setTransform(prevTransform);
}
要使用以下工具进行缩放:
图形对象G的变换T
scale
是要缩放的值:
@Override
protected void paintComponent(Graphics gr){
super.paintComponent(gr);
Graphics2D g = (Graphics2D)gr;
AffineTransform prevTransform = g.getTransform();
AffineTransform at = new AffineTransform(prevTransform);
at.scale(scale, scale);
g.setTransform(at);
g.drawRect(...);
g.setTransform(prevTransform);
}
你是说你得到了错误的结果,但我没有看到任何代码。发布一个。你是说你得到了错误的结果,但我没有看到任何代码。发布一个。你是说你得到了错误的结果,但我没有看到任何代码。张贴一封电子邮件。