摆动问题:在pdf图像上绘制矩形,并在放大和缩小时保持其大小和位置一致

鲍里斯·高曼(Boris Golman)

关于Swing,我有一个相当紧迫的问题,我已经好多年没碰到了。

我有一个代码,允许用户在pdf文档(包含在中JPanel上绘制不同的矩形我绘制它们,移动它们,调整它们的大小,选择它们,甚至在它们上写文字。我无法做的是在缩放文档时保持一致。随着文档变大,我绘制的矩形将保持在相同的位置和相同的大小。

我想知道是否有相对简单的逻辑来跟踪缩放级别,最重要的是相应地更新矩形。我可以检索的变焦比,这是一个浮动,但不幸的是,我使用的Rectangle对象,它的用途intxyheight,和width将其转换为会很麻烦Rectangle.Float,我想将其保存以备不时之需。

我尝试使用AffineTransform,但由于某种原因我对的坐标不正确,因此我不太熟悉y谁能向我解释:

  1. 随着pdf文档的放大和缩小,控制Rectangle对象的最佳方法是什么?
  2. 如果AffineTransform是最好的方法,我应该如何处理(如果有的话,可以提供一个很好的解释的链接-如果找不到,我找不到它)?

这是我一直在努力的唯一问题,现在变得有些沮丧。

科佩格

使用AffineTransform进行缩放

  1. 获取变换Ť所述的Graphics对象ģ
  2. 创建一个AffineTransform对象A
  3. 设置A的小数位数
  4. G的变换设置A
  5. 绘制形状
  6. 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); 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章