首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清洗矩形

清洗矩形
EN

Stack Overflow用户
提问于 2013-03-09 19:47:31
回答 2查看 50关注 0票数 0

我在脚本中有一个在画布上绘制矩形的函数,我想清除在"if“条件下绘制的矩形。我在画布上也有文本(它的坐标是0,80),它不应该被清除。只有矩形必须清洗。

代码语言:javascript
复制
function red_stroke_2(yy) 
{ 
    //Red color edges
    context.strokeStyle = "#f00";
    context.strokeRect(0,yy,800,40);
}
 if (Option1==answers[qnumber])
{
     red_stroke_2(80);
}
EN

回答 2

Stack Overflow用户

发布于 2013-03-09 20:12:22

Canvas是“无状态的”,因为它不知道已绘制的原语或已进行的调用。因此,不可能只撤消某个绘图调用。如果需要修改绘图,则需要重绘不想更改的所有项目。当然,你可以选择改变单个像素,所以如果你的文本是黑色的,而矩形是红色的,你可以替换所有的红色像素,但如果启用了抗锯齿功能,而且非常复杂,这就不会那么好用了。

因此,要么重新绘制整个区域(省略矩形绘制,但渲染文本)。或者考虑使用两个画布叠加在一起(一个是文本,一个是背景),那么你当然可以重新渲染背景,而不必担心文本。

最后但并非最不重要的是,使用SVG也可能是一种选择,因为它是有状态的,由DOM元素组成,您可以修改/插入/删除这些元素,浏览器将进行合成。在这种情况下,您将拥有一个rect元素和一个text元素,您可以简单地删除前者。

票数 0
EN

Stack Overflow用户

发布于 2013-03-09 20:14:20

这将放置透明像素而不是矩形:

代码语言:javascript
复制
function clean_red_stroke(yy)
{
    context.clearRect(0,yy,800,40);
}
//Call it with the same 'yy' you used in the drawing method
clean_red_stroke(80);

然而,我认为你的代码可以通过使用更多的变量(因此是一个最通用的函数)来改进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15310300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档