【JavaScript】canvas画色彩轮

本文介绍了两种使用JavaScript在HTML5canvas上实现色彩轮的方法,分别是利用arc函数绘制圆形色彩渐变和直线绘制线性色彩变化。
摘要由CSDN通过智能技术生成

1、利用arc画色彩轮

function actDrawColor(id){
	var canvas = document.getElementById(id);
	var ctx = canvas.getContext('2d');
	var centerX = canvas.width / 2; //圆心x
	var centerY = canvas.height / 2; //圆心y
	var radius = Math.min(centerX, centerY); //半径
	// 设置起始和结束亮度
	var startLight = 50;
	var endLight = 100;
	var lineWidth = radius / (startLight + 1); //线段宽度

	for (let hue = 0; hue <= 360; hue++) {
		for (let l = startLight; l <= endLight; l++) {
			var color = `hsl(${hue}, 100%, ${l}%)`;
			// 使用角度计算出圆上的点坐标
			var angle = hue * Math.PI / 180;
			var x = centerX - lineWidth * (100 - l) * Math.cos(angle);
			var y = centerY - lineWidth * (100 - l) * Math.sin(angle);
			// 绘制一个点或线段(这里以绘制点为例)
			ctx.beginPath();
			ctx.fillStyle = color;
			ctx.arc(x, y, lineWidth, 0, 2 * Math.PI);
			ctx.fill();
		}
	}
}

2、利用直线画色彩轮

function lineDrawColor(id) {
	var canvas = document.getElementById(id);
	var ctx = canvas.getContext('2d');
	var centerX = canvas.width / 2; //圆心x坐标
	var centerY = canvas.height / 2; //圆心y坐标
	var radius = Math.min(centerX, centerY); //圆的半径
	var light = 50; //
	var lineWidth = radius / light; //线段宽度
	for (l = light; l <= 100; l++) {
		for (h = 0; h <= 360; h++) {
			if (l == 100) {
				console.log(h);
			}
			var angle = h * (Math.PI / 180); //角度
			var ys = (100 - l) * lineWidth * Math.sin(angle);
			var xc = (100 - l) * lineWidth * Math.cos(angle);
			var y = centerY - ys; //根据角度得出x的位置
			var x = centerX - xc; //根据角度得出y的位置
			var color = `hsl(${h}, 100%, ${l}%)`; //颜色
			ctx.beginPath();
			ctx.strokeStyle = color; // 设置线段颜色
			ctx.moveTo(x, y); // 从中心点开始
			ctx.lineTo(x + xc, y + ys); // 到计算出的点结束
			ctx.lineWidth = lineWidth; // 设置线段宽度
			ctx.stroke(); // 绘制线段
		}
	}
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6f7a571d9b934d7787fa3bef2bead8c2.png#pic_center)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值