canvas - 创建画布径向(不是从内到外)渐变
问题描述
我需要画一个里面有渐变的圆圈。
createRadialGradient()
正在创建从内到外的渐变,createLinearGradient()
正在从一侧到另一侧创建渐变,但我需要创建如下图所示的内容。
解决方案
您可以填充形状的所有像素,计算每个像素的颜色。或者只是画很多不同颜色的线条。我使用了第二种方式:
function drawAngleGradient(ctx, options){
var delta = options.endAngle - options.startAngle;
for(var angle = options.startAngle; angle < options.endAngle; angle += options.angleStep){
var t = (angle - options.startAngle) / delta;
drawLine(ctx, {
start: options.center,
end: [
options.center[0] + options.radius * Math.cos(angle),
options.center[1] + options.radius * Math.sin(angle)
],
color: mixColors(options.startColor, options.endColor, t)
});
}
}
推荐阅读
- wordpress - 以正确的方式将自定义字段添加到自定义帖子类型
- mysql - 为什么我的内部连接在 MySQL 中比在 Python 中选择两个表并加入需要更长的时间?
- php - TCPDF - 为自定义标题设置左边距
- php - 在 Yii 框架中无法使用 Gii 生成模型,警告:count(): Parameter must be an array or an object that implement Countable
- c++ - 将此类数据作为字符串进行比较时出现问题
- javascript - 在 Angular 中填充输入 datetime-local
- javascript - 为什么我的 Firebase 云功能进程一直没有完成?
- swift - 如何在每月的第一天每天重复本地通知 - swift
- python - Heroku下HTTP请求返回403
- liquibase - liquibase 中的密码加密