You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX如何实现线段从起点到终点的绘制动画并永久保留线段?

实现方案

方案1:基于现有代码最小改动实现需求

你的现有代码中Path默认没有配置描边样式,也没有做显示进度的动画,按照以下步骤修改即可:

  • 首先给Path设置和圆形一致的描边颜色、宽度,关闭填充:
path.setStroke(Color.YELLOW);
path.setStrokeWidth(2); // 可根据需求调整宽度
path.setFill(null);
  • 新增描边进度动画,和PathTransition时长同步,实现「圆形走到哪里,路径显示到哪里」的绘制效果:
// 计算路径总长度
double pathLength = Stroker.strokeShape(path, new BasicStroke(1)).getBoundsInLocal().getWidth();
// 给路径设置虚线数组,总长度等于路径长度
path.getStrokeDashArray().setAll(pathLength, pathLength);
// 初始偏移设为路径总长度,此时路径完全隐藏
path.setStrokeDashOffset(pathLength);

// 新增描边显示动画
Timeline drawAnim = new Timeline(
    new KeyFrame(Duration.millis(1000),
        new KeyValue(path.strokeDashOffsetProperty(), 0)
    )
);
  • 同步两个动画的播放即可,如果不需要循环绘制,把原来的INDEFINITE改成1次,动画结束后路径会永久保留:
transicion.setCycleCount(1);
transicion.play();
drawAnim.play();

如果需要循环播放绘制效果,给两个动画都设置INDEFINITE即可,路径会重复隐藏再绘制。

方案2:更灵活的永久线段绘制方案

如果你的需求是支持累积绘制多条线段(比如绘制完一条再画下一条,所有绘制过的线段都保留),更推荐直接用Timeline实现画笔轨迹绘制:

  • 维护一个全局的Pane作为绘制画布,所有生成的路径都添加到这个画布上
  • 每次启动绘制时动态生成新的Path和圆形画笔,动态更新Path的点位和圆形的位置
  • 绘制完成后只隐藏圆形,路径永久留在画布上即可,还可以支持撤销、修改颜色等扩展功能

内容的提问来源于stack exchange,提问作者alex angulo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:15:11