Java 2d drawLine 对于长线来说很慢

标签 java awt drawing java-2d

我有一段代码需要绘制数千条线(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/

相关文章:

java - Spring覆盖另一个模块的bean

Java awt 计算器 +/- ,如何将 + 替换为 - : 1st click = "-", 第二次单击 = "+"等等

java - 将 Swing 按钮添加到使用 AWT 绘制的程序中

c - 在开罗让物体移动

c# - 使用 RadialGradientBrush 绘制球体

java - 使用 Java Web Start

java - 如何将字符串变量值转换为变量名

Java-如何绘制图形

java - 如何从另一个布局设置按钮监听器?

java - 如何将子菜单添加到 MenuItem