【发布时间】:2014-04-30 01:45:26
【问题描述】:
我有一个 Web 应用程序,您可以在其中在画布上绘制一个矩形。我使用了两个画布元素:一个用于绘制时的预览,另一个正好位于另一个的下方用于绘制它。
我遇到的问题是,在 Internet Explorer 中,canvas2.width = canvas2.width 不会清除 canvas2 的内容,这是必要的,因为每次鼠标移动都会再次绘制矩形。我也试过context2.clearRect(0,0,canvas2.width,canvas2.height),但是,预览矩形根本没有被绘制出来。在 http://jsfiddle.net/Y389a/2/
HTML:
<canvas id="canvas" width="600" height="400"></canvas>
<canvas id="canvas2" width="600" height="400" onmouseup="return drawLine()" onmousedown="return startLine()"></canvas>
CSS:
#canvas, #canvas2 {
position:absolute;
left:0px;
top:0px;
border-width:1px;
border-style:solid;
border-color:#666666;
cursor:default !important;
}
Javascript:
var x; var xStart;
var y; var yStart;
var clicked = false;
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var canvas2 = document.getElementById("canvas2");
var context2 = canvas2.getContext("2d");
context.strokeStyle = "black";
context.lineCap = "round";
canvas2.addEventListener('mousemove', function (evt) {
var rect = canvas2.getBoundingClientRect();
x = evt.clientX - rect.left;
y = evt.clientY - rect.top;
if (clicked) {
canvas2.width = canvas2.width;
context2.rect(xStart, yStart, x - xStart, y - yStart);
context2.stroke();
}
}, false);
function startLine() {
context.beginPath();
xStart = x; yStart = y;
clicked = true;
}
function drawLine() {
clicked = false;
context.rect(xStart, yStart, x - xStart, y - yStart);
context.stroke();
}
【问题讨论】:
-
我用的是最新版本,IE11
标签: javascript css html canvas