gpt4 book ai didi

zooming - 如何放大 GraphStream View ?

转载 作者:行者123 更新时间:2023-12-04 01:44:23 27 4
gpt4 key购买 nike

在 GraphStream 可视化中,图形可以是密集的。 enableAutoLayout 方法提供了 Graph 的全局可视化,因此需要进行缩放。如何放大 GraphStream View ?

Graph go=...;
Viewer viewer = new Viewer(go, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
viewer.enableAutoLayout();
View view = viewer.addDefaultView(false);
swingNode.setContent((JComponent) view);

最佳答案

我试图找到一种使用鼠标滚轮放大鼠标光标的方法,并偶然发现了这个线程,希望能找到答案。我想出了如何最终使用 GraphStream 缩放到鼠标:

在我的情况下,每次鼠标滚轮旋转的缩放系数为 1.25(缩小时为 0.8)。该代码根据图形的原始中心、图形中的点击点、缩放以及最终可以从相机检索到的 Px 与 Gu 的比率计算图形的新中心。

final Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
viewer.enableAutoLayout();
final View view = viewer.addDefaultView(false);
view.getCamera().setViewPercent(1);
((Component) view).addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
e.consume();
int i = e.getWheelRotation();
double factor = Math.pow(1.25, i);
Camera cam = view.getCamera();
double zoom = cam.getViewPercent() * factor;
Point2 pxCenter = cam.transformGuToPx(cam.getViewCenter().x, cam.getViewCenter().y, 0);
Point3 guClicked = cam.transformPxToGu(e.getX(), e.getY());
double newRatioPx2Gu = cam.getMetrics().ratioPx2Gu/factor;
double x = guClicked.x + (pxCenter.x - e.getX())/newRatioPx2Gu;
double y = guClicked.y - (pxCenter.y - e.getY())/newRatioPx2Gu;
cam.setViewCenter(x, y, 0);
cam.setViewPercent(zoom);
}
});

关于zooming - 如何放大 GraphStream View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44675827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com