canvas - 如何以不锯齿的方式绘制由多条线段组成的曲线

标签 canvas javafx bezier

我正在尝试编写一个程序,将传入的 USB 数据放到折线图上。我这样做的方法是在 Canvas 上绘制一串连接所有数据点的直线。问题是生成的线条不平滑,如下所示:

Jagged Line

我尝试使用 Graphics Context 的 lineTo(x, y) 方法,但这只会让事情变得更糟。我还尝试更改 Line Cap 和 Line Join 参数,但这并没有多大帮助。

有没有更好的方法来使用 JavaFX 图形上下文来播放“连点”?也许用贝塞尔曲线?如果有,请告诉我。

最佳答案

我最终采用了最简单的解决方案,即使用 BoxBlur 效果:

BoxBlur blur = new BoxBlur();
blur.setWidth(2);
blur.setHeight(2);
blur.setIterations(1);

gc.setEffect(blur);

 ...

//Don't forget to remove the effect before clearing
gc.setEffect(null);
gc.clearRect(0, 0, width, height);

这不是一个精确的解决方案,但它对我的目的来说效果很好。

关于canvas - 如何以不锯齿的方式绘制由多条线段组成的曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45310820/

相关文章:

java - 客户数量四舍五入

使用 jackson 数据绑定(bind)序列化对象时出现 Java InvalidDefinitionException

JavaFX 从切换按钮获取坐标

python - 按弦高划分曲线

c# - 从 BMP 或 SVG (C#) 获取顶点/边

math - 计算三次贝塞尔曲线的边界框

javascript - html5 Canvas 线宽空格

javascript - 无法清除 Canvas

c# - Silverlight - 在用户控制范围内公开 Canvas

javascript - 镜像网络摄像头图像的右半部分