javascript - 从 Canvas 中删除元素

标签 javascript jquery canvas

这是我的jsfiddle:

http://jsfiddle.net/alonshmiel/c4upM/45/

为了完成任务,我需要做两件事:

1) 当用户点击灰色小圆圈时,删除浅蓝色小圆圈中的线条。

我尝试在这段代码中执行以下操作:

// hide the line of the small light blue circle
var c=document.getElementById(canvas_id);
var ctx=c.getContext("2d");
ctx.clearRect(c.getAttribute('cx')-1,c.getAttribute('cy')-95,2,40);

它可以工作,但并不完美(clearRect 清除我想要清除的小区域的一部分)。

2) 当用户点击浅蓝色小圆圈时,删除灰色小圆圈中的线条。

感谢任何帮助!

感谢您的阅读!

最佳答案

如果我理解你的问题是正确的,你的意思是clearRect清除了你想要清除的东西的一部分?特别是,我假设您的意思是在删除线条后,圆圈下方的灰色圆弧留下了伪影。

问题是你当前的“修复”还不够。就像在删除蓝色圆圈中的线后必须重新绘制蓝色圆圈一样,您也需要重新绘制圆弧,因为它的一部分正在通过您的clearRect调用被删除。

一般来说,很难准确地说明某些绘制例程将如何在某些浏览器中实现。抗锯齿可能会打开或关闭(等等),导致“修复”变得困难。一种更简单的方法(除非渲染能力非常重要,否则是首选方法)是在单击圆圈时清除整个背景,然后重新渲染所有内容,除了有问题的线。

关于javascript - 从 Canvas 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577068/

相关文章:

javascript - 如何在带有背景图像的 Canvas 中画一条线

javascript - 二维变换 - 如何保持位置?

javascript - 在 Kendo UI 中将网格 pageSize 设置为变量

javascript - 阻止后退按钮 - 忽略单击按钮

javascript - 文本突出显示 - 内容可编辑

javascript - 集合创建后如何重新获取 Backbone 集合?

jquery - 在 jQuery 中获取元素

jquery - jPlayer 暂停按钮是内联显示的,但应该是 block 状的

javascript - 部分渲染 html5 canvas - 性能

javascript - 如何在 Formio 编辑期间使 I 字段成为必填字段?