我有一段代码需要绘制成千上万的线(在6000和50000之间)。
我后来修复的一个无关的错误暴露了一些有趣的东西;也就是说,当这些行很长(例如3万像素)时,drawLine函数占用了我95%的代码时间,而当这些行只有1000像素时,则只占了15%的时间。
线条颜色相同,固定宽度(1像素)
为什么长线绘制如此缓慢?我有哪些选择可以加快速度,而不仅仅是长行,是否有可以使用的渲染提示?我已经在运行此线程了。
最佳答案
我相信java drawline函数,当您在新区域中绘制一条线时(即它仅渲染了300x300的区域,但您将一条线绘制为200,500),它必须将所有这些像素初始化为可绘制区域。
这是一个类似答案的摘录:
“我建议您计算绘画区域的可见部分(使用JComponent的getVisibleRect()方法或Graphics g.getClip().getBounds()方法),并仅将绘画限制在该区域。
如果组件很大(例如具有10000x10000像素的组件区域),那么小的优化可以加快组件的绘制速度。”