我有一段代码需要绘制数千条线(6000 到 50000 之间)。
我随后修复了一个不相关的错误,暴露了一些有趣的东西;也就是说,当这些线条很长(比如 30k 像素)时,drawLine 函数会占用我的代码时间的 95%,而当线条只有 1000 像素长时,它只占用 15% 的时间。
线条颜色相同,宽度固定(1px)
为什么长线绘制这么慢?我有哪些选项可以加快速度,而不仅仅是长线,是否有可以使用的渲染提示?我已经在运行这个线程了。
最佳答案
我相信java的drawline函数,当你在新的区域画一条线时(即它只渲染了300x300的区域,但你画了一条线到200,500),它必须将所有这些像素初始化为可绘制区域。
以下是类似答案的片段:
“我建议您计算绘画区域的可见部分(使用 JComponent 的 getVisibleRect () 方法或 Graphics g.getClip ().getBounds () 方法)并仅使用该区域来限制您的绘画。
如果组件确实很大(例如组件区域为 10000x10000 像素),那么这个小优化可以加速组件的绘制速度。”
关于Java 2d drawLine 对于长线来说很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010630/