Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用画布在图像上绘制_Javascript_Canvas_Drawing - Fatal编程技术网

Javascript 使用画布在图像上绘制

Javascript 使用画布在图像上绘制,javascript,canvas,drawing,Javascript,Canvas,Drawing,我有一张这样加载的图片: <img src="map/racetrack.jpg" id="map"> 这是我的绘图功能: this.drawRoute = function(){ var pos = []; var canvas = $('<canvas/>')[0]; var img = $('#map')[0]; var ctx = canvas.getContext("2d"); canvas.width = im

我有一张这样加载的图片:

<img src="map/racetrack.jpg" id="map">

这是我的绘图功能:

this.drawRoute = function(){
    var pos = [];
    var canvas = $('<canvas/>')[0];
    var img = $('#map')[0]; 
    var ctx = canvas.getContext("2d");

    canvas.width = img.width;
    canvas.height = img.height;
    $(window).on('mousedown', function(e){
        pos.push({
            x: e.clientX,
            y: e.clientY
        });
    });

    if (positions.length > 1) {

        ctx.beginPath();
        ctx.moveTo(pos[0].x, pos[0].y);
        for (var i = 1; i < pos.length; i++) {
            ctx.lineTo(pos[i].x, pos[i].y);
        }
        ctx.stroke();
    }

}
this.drawRoute=函数(){
var pos=[];
var画布=$('')[0];
var img=$(“#map')[0];
var ctx=canvas.getContext(“2d”);
canvas.width=img.width;
canvas.height=img.height;
$(窗口).on('mousedown',函数(e){
位置推({
x:e.clientX,
y:e.clientY
});
});
如果(位置长度>1){
ctx.beginPath();
移动到(位置[0].x,位置[0].y);
对于(变量i=1;i
但这幅画上什么也没有画。我看不出错误在哪里。我知道通常我应该使用
元素,但我只需要在画布中完成这个特定的部分,其他什么都不需要


首先,您没有画布元素。第二,我没看到你把抽签部分叫到哪里去了

我最后做的是添加一个canvas元素,隐藏图像,然后每次绘制它时,都会将图像绘制到画布上,然后在画布上绘制点。希望这足以让你开始

    var pos = [];
    var canvas = $('#canvas')[0];
    var img = $('#map')[0];
    var ctx = canvas.getContext("2d");

    canvas.width = img.width;
    canvas.height = img.height;


    function render() {
        ctx.drawImage(img, 0, 0);

        if (pos.length > 1) {
            ctx.beginPath();
            ctx.moveTo(pos[0].x, pos[0].y);
            for (var i = 1; i < pos.length; i++) {
                ctx.lineTo(pos[i].x, pos[i].y);
            }
            ctx.stroke();
        }
    }

    $(window).on('mousedown', function (e) {
        pos.push({
            x: e.clientX,
            y: e.clientY
        });
        render();
    });

render();
var pos=[];
var canvas=$('#canvas')[0];
var img=$(“#map')[0];
var ctx=canvas.getContext(“2d”);
canvas.width=img.width;
canvas.height=img.height;
函数render(){
ctx.drawImage(img,0,0);
如果(位置长度>1){
ctx.beginPath();
移动到(位置[0].x,位置[0].y);
对于(变量i=1;i
首先,您没有画布元素。第二,我没看到你把抽签部分叫到哪里去了

我最后做的是添加一个canvas元素,隐藏图像,然后每次绘制它时,都会将图像绘制到画布上,然后在画布上绘制点。希望这足以让你开始

    var pos = [];
    var canvas = $('#canvas')[0];
    var img = $('#map')[0];
    var ctx = canvas.getContext("2d");

    canvas.width = img.width;
    canvas.height = img.height;


    function render() {
        ctx.drawImage(img, 0, 0);

        if (pos.length > 1) {
            ctx.beginPath();
            ctx.moveTo(pos[0].x, pos[0].y);
            for (var i = 1; i < pos.length; i++) {
                ctx.lineTo(pos[i].x, pos[i].y);
            }
            ctx.stroke();
        }
    }

    $(window).on('mousedown', function (e) {
        pos.push({
            x: e.clientX,
            y: e.clientY
        });
        render();
    });

render();
var pos=[];
var canvas=$('#canvas')[0];
var img=$(“#map')[0];
var ctx=canvas.getContext(“2d”);
canvas.width=img.width;
canvas.height=img.height;
函数render(){
ctx.drawImage(img,0,0);
如果(位置长度>1){
ctx.beginPath();
移动到(位置[0].x,位置[0].y);
对于(变量i=1;i
我的印象是,当我在js文件中创建画布元素时,这足以在实际图像上显示绘制线,但这肯定会有所帮助。谢谢。我的印象是,当我在js文件中创建画布元素时,这就足以在实际图像上显示绘制线,但这肯定会有所帮助。非常感谢。