首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动式画布

移动式画布
EN

Stack Overflow用户
提问于 2019-10-22 20:53:50
回答 1查看 49关注 0票数 0

我试图使用Javascript中的画布在空白矩形中绘制一些东西,但我得到的只是这样一个移位的画笔:https://i.imgur.com/s7g34wi.gifv

这是我的代码:

代码语言:javascript
复制
    var canvasE = {
    canvas : document.getElementById("canvas"),
    ctx : canvas.getContext("2d"),
    rect : canvas.getBoundingClientRect(),
    mouse : {x: 0, y: 0},


    
    initCanvas(){
        canvasE.canvas.addEventListener('mousemove', function(e){
            canvasE.mouse.x = e.offsetX
            canvasE.mouse.y = e.offsetY
        }, false);

        canvasE.ctx.lineWidht = 3;
        canvasE.ctx.lineJoin = "round";
        canvasE.ctx.lineCap = "round";
        canvasE.ctx.strokeStyle = "black";

        canvasE.canvas.addEventListener('mousedown', function(e){
            canvasE.ctx.beginPath();
            canvasE.ctx.moveTo(canvasE.mouse.x, canvasE.mouse.y);
            canvasE.canvas.addEventListener('mousemove', onPaint, false);
        }, false);
    
        canvasE.canvas.addEventListener('mouseup', function(e){
            canvasE.canvas.removeEventListener('mousemove', onPaint, false);
        }, false);

        onPaint = function() {
            canvasE.ctx.lineTo(canvasE.mouse.x, canvasE.mouse.y);
            canvasE.ctx.stroke();
        }
    },

    clear(){
        canvasE.ctx.clearRect(0, 0, canvas.width, canvas.height);
    },}
    
canvasE.initCanvas();
代码语言:javascript
复制
canvas
{
  border: 1px solid black;
}
代码语言:javascript
复制
<canvas id="canvas"></canvas>

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 21:02:47

这是你的CSS。永远不要使用CSS为<canvas>指定宽度和高度。始终在<canvas>标记中指定它。我修好了:

代码语言:javascript
复制
var canvasE = {
    canvas : document.getElementById("canvas"),
    ctx : canvas.getContext("2d"),
    rect : canvas.getBoundingClientRect(),
    mouse : {x: 0, y: 0},


    
    initCanvas(){
        canvasE.canvas.addEventListener('mousemove', function(e){
            canvasE.mouse.x = e.offsetX;
            canvasE.mouse.y = e.offsetY;
        }, false);

        canvasE.ctx.lineWidth = 3;
        canvasE.ctx.lineJoin = "round";
        canvasE.ctx.lineCap = "round";
        canvasE.ctx.strokeStyle = "black";

        canvasE.canvas.addEventListener('mousedown', function(e){
            canvasE.ctx.beginPath();
            canvasE.ctx.moveTo(canvasE.mouse.x, canvasE.mouse.y);
            canvasE.canvas.addEventListener('mousemove', onPaint, false);
        }, false);
    
        canvasE.canvas.addEventListener('mouseup', function(e){
            canvasE.canvas.removeEventListener('mousemove', onPaint, false);
        }, false);

        onPaint = function() {
            canvasE.ctx.lineTo(canvasE.mouse.x, canvasE.mouse.y);
            canvasE.ctx.stroke();
        }
    },

    clear(){
        canvasE.ctx.clearRect(0, 0, canvas.width, canvas.height);
    },}
    
canvasE.initCanvas();
代码语言:javascript
复制
canvas
{
  border: 1px solid black;
}
代码语言:javascript
复制
<canvas id="canvas" width="200px" height="200px"></canvas>

我还修正了我在评论中提到的错误:)

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

https://stackoverflow.com/questions/58512180

复制
相关文章

相似问题

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