【发布时间】:2014-05-17 13:59:35
【问题描述】:
短版
简而言之,我如何检测鼠标光标是否位于 HTML 5 Canvas 上绘制的圆的扇区内
加长版
我拥有所有这些投票数据,并希望将其显示为饼图,并随着数据的进入而更新,所以我有 PHP 脚本来计算段大小并制作一个通过 $.getScript 加载的 javascript
function toRadians(deg) {
return deg * Math.PI / 180
}
function drawpiechart() {
ctx.fillStyle='#fdbb30';
ctx.beginPath();
ctx.moveTo(cx,cy);
ctx.arc(cx,cy,125,0,toRadians(65.4545454545));
ctx.lineTo(cx,cy);
ctx.closePath();
ctx.fill();
ctx.fillStyle='#0087dc';
ctx.beginPath();
ctx.moveTo(cx,cy);
ctx.arc(cx,cy,125,toRadians(65.4545454545),toRadians(98.1818181818));
ctx.lineTo(cx,cy);
ctx.closePath();
ctx.fill();
ctx.fillStyle='#EEEEEE';
ctx.beginPath();
ctx.moveTo(cx,cy);
ctx.arc(cx,cy,125,toRadians(98.1818181818),toRadians(360));
ctx.lineTo(cx,cy);
ctx.closePath();
ctx.fill();
}
这是饼图代码的JSfiddle。
我之前研究过clickable areas,但不知道如何将其应用于某个领域。
我也考虑过使用ghost canvas background,但不知道如何翻译,因此每个部门都被单独处理。
有没有办法在没有库的情况下做到这一点,或者我应该考虑使用 ChartJs 之类的东西?
【问题讨论】:
-
@bosonix 我以前没见过那个,谢谢
-
或者干脆在最后定义的路径上使用原生方法
ctx.isPointInPath(x, y)(对每个扇区重新定义,无需重绘)。 -
@Epistemex 太棒了
标签: javascript html canvas geometry