使用单个画布,我用javascript绘制了两个不同的图表,是否有任何方法可以在画布中删除最后绘制的图表
using single canvas i have drawn two different diagrams using javascript,is there any way i can remove last drawn diagram in canvas
使用单个画布元素我使用javascript绘制了两个不同的图表,是否有任何方法可以在画布中删除最后绘制的图表。这是我的画布代码<canvas style="width: 100px; height: 100px; border: 1px solid red;" id="cns"></canvas>
,我已经使用javascript创建了我的图表,并在按钮单击我试图删除最后绘制的图表var c = document.getElementById("cns");
var d = c.getContext("2d");
d.fillStyle = "#FF0000";
d.fillRect(0, 0, 106, 106);
var c1 = document.getElementById("cns");
var d1= c.getContext("2d");
d1.fillStyle = "#00A550";
d1.fillRect(0, 0, 90, 90);
$("#clk").click(function () {
d1.clearRect(0, 0, 90, 90);
});
,但它清除了给定尺寸的整个矩形。有没有我可以清除最后绘制的图像
我看到您正在获得对同一画布(id=cns)的多个引用和对其上下文的多个引用。
对于任何单个画布,该画布有且只有1个上下文。一个单一的画布没有多个图层(比如Photoshop)。
因此,d
和d1
变量实际上包含相同的上下文。这就是为什么清除d
或d1
会清除画布上相同的区域。
处理画布上的多组图纸(多个图表)的通常方法是:
-
保存足够的信息来重新创建每个单独的绘图(图表)-通常保存在JS对象中
-
清空整个画布
-
使用保存的信息重新绘制当前所需的图。
您可以在插入第二个图之前使用context.save()
方法保存到画布。然后,当您想要删除第二个图表时,使用context.restore()
,它应该会奏效。
- d3.js-是否可以在没有.map的情况下绘制和直方图
- 是否可以指示浏览器首先绘制页面的哪些元素
- 如何使用google.maps.Rectangle对象在谷歌地图上绘制选择/边界框/矩形,并检查标记是否落在其中
- 拆分脚本/CSS 是否会产生更快的执行/绘制时间
- 每次更改数据集时,高图表是否都会重新绘制
- 传单绘制 确定一个多边形是否包含另一个多边形
- 是否可以在HTML5.canvas中绘制大量简单的几何图形
- 是否可以绘制多个SVG's到画布上
- requestAnimationFrame调用是否总是被抑制到60 FPS.只要屏幕准备重新绘制,就会调用
- D3:是否可以根据阈值绘制一条线并将其分配给两个轴
- 在HTML5画布中是否有任何事件告诉图像已经绘制
- 如何绘制一个可编辑和可拖动的五边形,并找到是否有任何点在里面
- 如何使用Javascript检测用户是否绘制了某条路径
- 是否有任何方法来绘制饼状图使用highstock最新版本
- 在绘制d3图表之前,请检查多个异步函数是否已完成
- 任何检测浏览器是否停止在滚动上重新绘制的方法
- 是否有可能在HTML5画布的路径上绘制图像
- 是否有可能在iPhone应用程序中通过JavaScript绘制图形?
- 使用单个画布,我用javascript绘制了两个不同的图表,是否有任何方法可以在画布中删除最后绘制的图表
- 如何(自动地)测试浏览器重新绘制后是否发生了操作