Java绘制图像和绘制图形区别_比较开源java图形绘图框架(JUNG和Prefuse)来绘制网络拓扑...

几年前(2007?)我使用prefuse可视化调用数据记录。我考虑了早餐,jung,jgraph和其他几个人,选择了prefuse。首先,有点难以包装我的头围绕在前,但一旦我熟悉它,它是很容易(扩展)和乐趣使用。我想对于JUNG同样可以说,但我从来没有尝试过。

1)在prefuse中,很容易添加您自己的自定义渲染器来绘制平行边缘 – 你可以继承默认的EdgeRenderer并重写render()方法。没有“基本的数据级更改”需要。这是所有在视图部分,如果你想把它作为一个MVC的东西。

2)这根本不是一个问题。有多种方法可以做到这一点:1)你可以有两个渲染器 – 一个用于绘制有向边和一个用于绘制无向边,他们会工作很好,并适当地分组边缘。 2)放置一个标志(在prefuse speak中的后备表元组中添加一个布尔列)以指示边缘是否被定向,并根据该标志在EdgeRender中相应地跳过箭头绘制部分。

3)这是超级容易

4)同上

5)最后一个预留版本是“prefuse beta版本2007.10.21”。我使用了之前,一个可能的竞争条件,当动态添加或删除节点 – 它错过了几个同步关键字我猜。我解决了,通过确保在添加或删除节点时停止所有的动画和动作(颜色,大小,布局) – 也不要忘记更新lucene索引(如果你确实使用其内置lucene搜索引擎)。最新的一个应该是解决这个种族问题,但我从来没有机会尝试它。

6)由于你提到“多重标记”,我认为这不是“修改图形并重新绘制”的问题 – 这只是自定义您的标签/边缘渲染器只绘制相关标签的问题,这不是一个真正的大问题。另外我不认为这是与5有关。

7)我并不惊讶,prefuse和JUNG的FruchtermanReingoldLayout的渲染是不同的 – 有一些因素可能会影响这一个开始节点,每个实现开始计算,所以我不会担心这个问题。它很容易尝试不同的内置图布局算法在prefuse中,所以你可以继续,检查哪一个是最接近你想要的。查看RadialLayout和BalloonTreeLayout的星形布局。 ForceDirectedLayout需要相当多的迭代来使节点的布局“稳定”。请注意,这些迭代不需要显示,因此您可以在后台运行它并渲染最终结果。

我没有使用JUNG,所以我不能评论很多。

根据我对prefuse的经验,我强烈推荐它,由于非常好(IMHO)思想的设计和组件之间的可分离性。杰弗里·海尔(早期作家)真的做得很好。

事情要注意,如果你使用prefuse(这是我生动地记住使用prefuse时的两个“sore-thumbs”):

1)有一个错误,当缩小时,节点标签没有被适当地缩小,使得它溢出节点的边界框,当节点移动时会留下字体绘图工件,因为渲染器仅清除和重绘节点边界内的东西框。 IIRC这是由AWT字体度量本身的错误引起的。解决方法是在标签和节点边界框​​之间留出足够的边距。

2)当扩展内置布局时,您可能会遇到一个或两个“范围问题”,其中您希望访问的超类的成员被赋予private属性而不是protected,所以解决方案是修改库本身或创建一个没有继承的类(可能有点痛苦!)。我想你可以说一样的其他一些java库。不是每个人都有后见之明的好处吗? 🙂

因为你在一个月前(在我写这篇文章时)提出了这个问题,我想知道你的决定是什么,以及如果你继续执行,它是怎么回事。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值