最新下载
CSS3弹出Metro登录表单
jQuery表单输入文字计数显示代码
24小时阅读排行榜
- 1 css响应式侧边栏在手机端折叠如何实现_使用transform和transition
- 2 Golang sync WaitGroup使用不当会怎样_并发等待常见问题
- 3 如何安全地将 C# 列表通过 onclick 传递给 jQuery 方法
- 4 如何在 Pandas 中安全地用映射字典更新列值而不丢失未匹配项
- 5 css 相对定位会影响其他元素吗_通过占位特性进行说明
- 6 php修改权限后缓存未更新_php清除缓存生效法【步骤】
- 7 css:hover效果不生效怎么办_检查元素状态和优先级
- 8 如何在 PHP 中将关联数组动态转换为嵌套数组结构以适配 API 接口
- 9 php怎样修改文件权限_php修改文件权限chmod用法【步骤】
- 10 如何在 PHP 中高效检测并替换字符串中相邻的特定字符序列
- 11 C++ 数组越界后果是什么 C++ 缓冲区溢出攻击原理科普【安全】
- 12 如何在 Go 中安全限制从 net.TCPConn 读取的字节数
- 13 如何获取一个数组中不在另一个数组中的日期值
- 14 Pydantic Settings 字段命名与环境变量冲突的解决方案
- 15 SVG的<animateTransform>标签怎么用 实现旋转和缩放动画
最新教程
-
- Node.js 教程
- 16550 2025-08-28
-
- CSS3 教程
- 1547512 2025-08-27
-
- Rust 教程
- 23638 2025-08-27
-
- Vue 教程
- 26025 2025-08-22
-
- PostgreSQL 教程
- 22529 2025-08-21
-
- Git 教程
- 9419 2025-08-21
代码片段:
Stem.prototype.draw = function(ctx) {
var len, ctrlPoint, point;
len = this.points.length - 1;
ctrlPoint = {x: 0, y: 0};
ctx.save();
ctx.strokeStyle = this.color;
ctx.beginPath();
ctx.moveTo(this.points[this.points.length - 1].x, this.points[this.points.length - 1].y);
for (var i = len; i >= 1; i--) {
point = this.points[i];
ctrlPoint.x = (point.x + this.points[i - 1].x) / 2;
ctrlPoint.y = (point.y + this.points[i - 1].y) / 2;
ctx.quadraticCurveTo(point.x, point.y, ctrlPoint.x, ctrlPoint.y);
ctx.lineWidth = i * 1.1;
ctx.stroke();
ctx.fillStyle = 'red';
}
ctx.restore();
}
