我正在尝试使用AffineTransform从其中心缩放矩形。我敢肯定解决方案是显而易见的,但我无法使它起作用!到目前为止,这是我测试过的…
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Test extends JPanel {
Test()
{
super(null);
setOpaque(true);
setBackground(Color.WHITE);
setPreferredSize(new Dimension(200,200));
}
@Override
protected void paintComponent(Graphics g1) {
super.paintComponent(g1);
Rectangle r= new Rectangle(5,5,getWidth()-10,getHeight()-10);
double cx= r.getCenterX();
double cy= r.getCenterY();
Graphics2D g=(Graphics2D)g1;
g.setColor(Color.BLACK);
AffineTransform old= g.getTransform();
for(double zoom=0.9; zoom>=0.5; zoom-=0.1)
{
AffineTransform tr2= new AffineTransform(old);
tr2.translate(-cx, -cy);
tr2.scale(zoom, zoom);
tr2.translate(cx/zoom,cy/zoom);
g.setTransform(tr2);
g.draw(r);
g.setTransform(old);
}
}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, new Test());
}
}
但这是行不通的。
当您处理矩形时,我明白了您的意思。原因是因为转换的初始计算未考虑容器对象的大小。
使用此代替:
tr2.translate(
(this.getWidth()/2) - (r.getWidth()*(zoom))/2,
(this.getHeight()/2) - (r.getHeight()*(zoom))/2
);
tr2.scale(zoom,zoom);
g.setTransform(tr2);
这样做是在将矩形缩放之前将其平移到面板的中心。在我的测试中,它工作正常。
问题内容: 我正在尝试缩放/翻译java.awt。使用 AffineTransform 进行 造型 ,以便以定义的边界Rectangle进行绘制。 此外,我想在具有“ zoom ”参数的绘图区域中进行绘制。 我尝试了AffineTransform的各种串联,但是找不到正确的序列。例如,以下解决方案是错误的: 关于正确的AffineTransform有任何想法吗? 非常感谢 皮埃尔 问题答案: 需要
问题内容: 所以我的问题是我有一个图片,并将其CSS设置为 它以较低的分辨率缩放(如下面的小提琴所示)。我想要的是使过渡从图像的中心生效。 目前; 从我在大多数涉及规模的过渡中所见,它们从左上角开始扩展。 问题答案: 只需替换为on即可。
学生班级:
问题内容: 我希望能够放大HTML 5画布中鼠标下方的点,例如Google Maps上的。我该如何实现? 问题答案: 终于解决了: 关键是计算轴位置,以便缩放点(鼠标指针)在缩放后保持在同一位置。 最初,鼠标与角之间有一段距离,我们希望鼠标下方的点在缩放后保持在同一位置,但这是远离角的地方。因此,我们需要移动(角的坐标)以解决此问题。 然后,其余代码需要应用缩放并转换到绘制上下文,以便其原点与画布
问题内容: 我需要实现变焦为包含在。我已经通过覆盖方法和调用来成功进行缩放。 这是不正常:对的和的规模如预期,但一定会得到的和这样的寄存器在预分频的位置。我能做什么?感谢您的阅读。 问题答案: 显示了如何使用明确的转化方法扩展鼠标坐标:,,和。)。
我试图从JSON中提取值,并将其存储在String List中,因为稍后我需要检查我在csv文件中的值是否存在于此List中。 任何人都可以帮我建立一个路径来提取它吗? 现在我在我的控制台上得到了这个。**(它只返回了十个,因为我更改了“limit”参数。 我的代码直到现在: 下面您可以找到JSON结构,我只需要对象“标识符”数组中的所有“accountId”。