在Canvas中绘制矩形

4

我能在画布(canvas)上绘制矩形。但是它被视频所遮挡,我只能从侧面看到它。请建议我如何才能将它绘制在视频上,就像我可以在图像上绘制一样。这是我正在使用的代码:

   <p>Video to use:</p>
<video id="video1" controls width="270" autoplay>
  <source src="http://www.craftymind.com/factory/html5video/BigBuckBunny_640x360.ogv" type="video/ogg"/> 
</video>

<p>Canvas (the code draws the current frame of the video every 20 millisecond):</p>
<canvas id="myCanvas" width="270" height="135" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

></canvas></div>

请在以下链接查看我的jsfiddle:http://jsfiddle.net/mummydaddy/LjqbuLne/

2个回答

1

要在矩形框下看到您的视频,您需要像这样将矩形框绘制到所有帧刷新中:

v.addEventListener("play", function() {var i = window.setInterval(function() {

  ctx.clearRect ( 0 , 0 , 300 , 300 );    // clear your canvas if you move shapes
  ctx.drawImage(v,5,5,260,125) 
  ctx.beginPath();
  ctx.rect(100, 100, 200, 200);
  ctx.fillStyle = 'yellow';
  ctx.fill();
  ctx.lineWidth = 7;
  ctx.strokeStyle = 'black';
  ctx.stroke();
},20); }, false);

你可以看到我使用了ctx而不是context var。这两个变量具有相同的节点引用,因此...没有必要复制它。

1
你需要这样做:

您需要这样做:

Fiddle

var v = document.getElementById("video1");
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var i;

function draw() {
    i = window.setInterval(function draw() {
        ctx.drawImage(v, 5, 5, 260, 125);
        ctx.clearRect(135, 92, 126, 34);
        ctx.beginPath();
        ctx.rect(135, 92, 126, 34);
        ctx.fillStyle = 'yellow';
        ctx.fill();
        ctx.lineWidth = 7;
        ctx.strokeStyle = 'black';
        ctx.stroke();
    }, 20);
}

draw();
v.addEventListener("play", function () {
    draw();
}, false);
v.addEventListener("pause", function () {
    clearInterval(i);
}, false);
v.addEventListener("ended", function () {
    clearInterval(i);
}, false);

@125fura - 看看这个Fiddle。我已经改变了矩形的宽度和高度。 - Weafs.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接