操作html画布

操作html画布

判断浏览器是否可使用画布

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    ctx.fillRect(100,200,300,300);
    if(!canv.getContext){
       alert("当前浏览器不支持canvas,请下载最新的浏览器!");
    }


</script>
</body>
</html>

1.创建画布
<canvas id="画布的名称" width="宽度" height="高度"></canvas>

2.获取画布
var cas = document.getElementById("画布的名称")

3.获取画笔
var ctx = cas.getContext('2d');

绘制直线


<body>
    <!-- 创建画布 -->
    <canvas id="cas" width="200" height="200"></canvas>
    
    <script type="text/javascript">
        //1、获取画布
        var cas = document.getElementById('cas');
        //2、获取画笔
        var ctx = cas.getContext('2d');
        //3、确定起始点
        ctx.moveTo(10,10);
        //4、确定连接端点(终点)
        ctx.lineTo(125,100);
        ctx.lineWidth = '10'; //设置线宽
        //5.描边
        ctx.strokeStyle = '#0f0'; //描边的颜色
        ctx.lineCap = 'square'; //线条端点的形状
        ctx.stroke();
    </script>
</body>


多次绘画

<body>
    <!-- 创建画布 -->
    <canvas id="cas" width="200" height="200"></canvas>

    <script type="text/javascript">
        //1、获取画布
        var cas = document.getElementById('cas');
        //2、获取画笔
        var ctx = cas.getContext('2d');
        //3、确定起始点
        ctx.moveTo(10,10);
        //4、确定连接端点(终点)
        ctx.lineTo(125,100);
        ctx.lineWidth = '10'; //设置线宽
        //5.描边
        ctx.strokeStyle = '#0f0'; //描边的颜色
        ctx.lineCap = 'square'; //线条端点的形状
        ctx.stroke();

        ctx.beginPath(); //重置路径
        ctx.moveTo(10,100);
        ctx.lineTo(100,100);
        ctx.stroke();
    </script>
</body>

闭合路径

<body>
    <!-- 创建画布 -->
    <canvas id="cas" width="200" height="200"></canvas>
    
    <script type="text/javascript">
       var cas = document.getElementById('cas');
       var ctx = cas.getContext('2d');
       ctx.moveTo(10,10);  //确定起始点
       ctx.strokeStyle = '#00f'; //设置描边颜色
       ctx.lineTo(10,150); //确定第一个端点
       ctx.lineTo(150,150);//确定第二个端点
       ctx.closePath();//闭合路径
       ctx.stroke(); //描边
    </script>
</body>

填充

<body>
    <!-- 创建画布 -->
    <canvas id="cas" width="200" height="200"></canvas>
 
    <script type="text/javascript">
       var cas = document.getElementById('cas');
       var ctx = cas.getContext('2d');
       ctx.moveTo(10,10);  //确定起始点
       ctx.strokeStyle = '#00f'; //设置描边颜色
       ctx.lineTo(10,150); //确定第一个端点
       ctx.lineTo(150,150);//确定第二个端点
       ctx.closePath();//闭合路径
    //    ctx.stroke(); //描边
       ctx.fillStyle = 'red'; //设置填充色
       ctx.fill();//进行填充
    </script>
</body>

绘制圆

var ctx = document.getElementById("cas").getContext('2d');
ctx.beginPath();//开始路径
ctx.arc(100,100,80,0,2*Math.PI,true); //绘制圆
ctx.closePath();//闭合路径
ctx.fillStyle = 'green';
ctx.fill();

绘制矩形

rect()	创建矩形。
fillRect()	绘制"被填充"的矩形。
strokeRect()	绘制矩形(无填充)。
clearRect()	在给定的矩形内清除指定的像素。

绘制图像

ctx.drawImage(图片对象, x位置, y位置)
ctx.drawImage(图片对象, x位置, y位置, 宽度, 高度)
ctx.drawImage(图片对象, 图像裁剪的x位置, 图像裁剪的y位置, 裁剪的宽度, 裁剪的高度, x位置, y位置, 宽度, 高度)

ctx.drawImage(image, x, y);
参数:
image: 规定要使用的图像,画布或者视频,
x : 在画布上放置图像的x轴坐标位置
y: 在画布上方式图像的y轴坐标位置
<body>
    <!-- 创建画布 -->
    <canvas id="canvas1" width="200" height="200"></canvas>

    <script type="text/javascript">
        let canvas = document.getElementById("canvas1");
        let ctx = canvas.getContext('2d');
        let img = new Image();
        img.src = "testRes.jpg";
        img.onload = function(){
            ctx.drawImage(img, 0, 0);
        }
    </script>
</body>

ctx.drawImage(image, x, y, w, h)
参数:
image: 规定要使用的图像,画布或者视频,
x : 在画布上放置图像的x轴坐标位置
y: 在画布上方式图像的y轴坐标位置
w:使用图像的宽度
h: 使用图像的高度
<body>
    <!-- 创建画布 -->
    <canvas id="canvas1" width="200" height="200"></canvas>

    <script type="text/javascript">
        let canvas = document.getElementById("canvas1");
        let ctx = canvas.getContext('2d');
        let img = new Image();
        img.src = "testRes.jpg";
        img.onload = function () {
            ctx.drawImage(img, 50, 50, 100, 200);
        }
    </script>
</body>

在这里插入图片描述

<html>
<head>
    <title></title>

    <style>
        #mycanv{
        width:500px;
        height:500px;
        background:#369;

        }

    </style>

</head>
<body>

<canvas id="mycanv"></canvas>

<script>

    var canv= document.getElementById("mycanv");

    var ctx = canv.getContext("2d");

    ctx.lineWidth =5;
    ctx.strokeRect(100,100,150,150)


</script>
</body>
</html>

在这里插入图片描述

动态设置画布大小

    var canv= document.getElementById("mycanv");
 
 canv.height ='800'
 canv.width = '800'
<html>
<head>
    <title></title>

    <style>
        #mycanv{
        width:500px;
        height:500px;
        background:#369;

        }

    </style>

</head>
<body>

<canvas id="mycanv"></canvas>

<script>

    var canv= document.getElementById("mycanv");
 
 canv.height ='800'
 canv.width = '800'
    var ctx = canv.getContext("2d");

    ctx.lineWidth =5;
    ctx.strokeRect(100,100,150,150)


</script>
</body>
</html>

获取点击事件坐标

<html>
<head>
    <title></title>

    <style>
        #mycanv{
        width:500px;
        height:500px;
        background:#369;

        }

    </style>

</head>
<body>

<canvas id="mycanv"></canvas>

<script>

    var canv= document.getElementById("mycanv");

    var ctx = canv.getContext("2d");

    ctx.lineWidth =5;
    ctx.strokeRect(100,100,150,150);

    canv.addEventListener('click',function(){
     console.log(event);
     console.log(event.x);
     console.log(event.y);
    })


</script>
</body>
</html>

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    ctx.fillRect(100,200,300,300);
    


</script>
</body>
</html>

在这里插入图片描述

查看画布的大小

在这里插入图片描述

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    // 路径绘制矩形 x y w h
    ctx.strokeRect(100, 100, 200, 100);
    


</script>
</body>
</html>

在这里插入图片描述

清除画布

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    // 路径绘制矩形 x y w h
    ctx.strokeRect(100, 100, 200, 100);
    

    // 清除画布
    ctx.clearRect(0, 0, canv.clientWidth, canv.clientHeight);
    

</script>
</body>
</html>

在这里插入图片描述

渐变清除

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    // 路径绘制矩形 x y w h
    ctx.strokeRect(100, 100, 200, 100);
    

    // 渐变清除画布
   let height=0;
   let t1 = setInterval( ()=>{
     height++;
     ctx.clearRect(0,0,canv.clientWidth,height);
     if(height > canv.clientHeight){
          clearInterval(t1);
     }},10)

    

</script>
</body>
</html>

在这里插入图片描述

拆开绘制

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    // 拆开绘制
    ctx.rect(100, 100, 200, 300);
    ctx.stroke();
    

    ctx.rect(100, 100, 200, 200);
    ctx.fill();
    

</script>
</body>
</html>

加开始结束路径

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="mycanv" width="600" height="400"></canvas>

<script>
    
    var canv= document.getElementById("mycanv");
    var ctx = canv.getContext("2d");
    // 拆开绘制
    ctx.beginPath();
    
    ctx.rect(100, 100, 200, 300);
    ctx.stroke();
    ctx.closePath();
    
    ctx.beginPath();
    ctx.rect(100, 100, 200, 200);
    ctx.fill();
    ctx.closePath();

</script>
</body>
</html>

在这里插入图片描述

绘制画板

<html>
<head>
    <title></title>

</head>
<body>

<canvas id="canv" width="800" height="600"></canvas>

<hr>

<button id="boldBtn" type="button">粗线条</button>
<button id="thinBtn" type="button">细线条</button>
<button id="saveBtn" type="button">保存</button>
<input id="color" type="color"></input>
<button class="clearBtn" >橡皮擦</button>
<button id="nullBtn" >清空画布</button>

<script>
// 1.获取canvas画布和绘制对象
var canvas = document.querySelector('#canv')
var ctx = canvas.getContext('2d');
// 连接处圆润
ctx.lineJoin = 'round'
// 2 获取输入框和按钮
var boldBtn = document.querySelector('#boldBtn')
var thinBtn = document.querySelector('#thinBtn')
var inputColor = document.querySelector('#color')
var saveBtn = document.querySelector('#saveBtn')
var cleatBtn = document.querySelector('.clearBtn')
var nullBtn = document.querySelector('#nullBtn')


// 设置允许绘制的变量
var isDraw = false;


canvas.onmousedown=function(){
    isDraw = true;
    ctx.beginPath();
    var x = event.pageX - canvas.offsetLeft;
    console.log(event.pageX)
    console.log(canvas.offsetLeft)
    console.log(x)
    console.log(event.x);

    console

    var y = event.pageY - canvas.offsetTop;
    ctx.moveTo(x, y);
    
    
}

canvas.onmouseleave = function(){
  isDraw = false;
  ctx.closePath();
  
}

canvas.onmouseup = function(){
    isDraw = false;
    ctx.closePath();
}

canvas.onmousemove = function(){
  if(isDraw){
    var x = event.pageX - canvas.offsetLeft;
    var y = event.pageY - canvas.offsetTop;
    ctx.lineTo(x, y);
    ctx.stroke();

  }
}

</script>
</body>
</html>

绘制画板2

<html>
<head>
    <title></title>
<style>
    button.active{
        color: #fff;
        background-color: orangered;
    }
</style>
</head>
<body>

<canvas id="canv" width="800" height="600"></canvas>

<hr>

<button id="boldBtn" type="button">粗线条</button>
<button id="thinBtn" type="button">细线条</button>
<button id="saveBtn" type="button">保存</button>
<input id="color" type="color"></input>
<button class="clearBtn" >橡皮擦</button>
<button id="nullBtn" >清空画布</button>

<script>
// 1.获取canvas画布和绘制对象
var canvas = document.querySelector('#canv')
var ctx = canvas.getContext('2d');
// 连接处圆润
ctx.lineJoin = 'round'
// 2 获取输入框和按钮
var boldBtn = document.querySelector('#boldBtn')
var thinBtn = document.querySelector('#thinBtn')
var inputColor = document.querySelector('#color')
var saveBtn = document.querySelector('#saveBtn')
var clearBtn = document.querySelector('.clearBtn')
var nullBtn = document.querySelector('#nullBtn')


// 设置允许绘制的变量
var isDraw = false;


canvas.onmousedown=function(){
    isDraw = true;
    ctx.beginPath();
    var x = event.pageX - canvas.offsetLeft;
    console.log(event.pageX)
    console.log(canvas.offsetLeft)
    console.log(x)
    console.log(event.x);

    console

    var y = event.pageY - canvas.offsetTop;
    ctx.moveTo(x, y);
    
    
}

canvas.onmouseleave = function(){
  isDraw = false;
  ctx.closePath();
  
}

canvas.onmouseup = function(){
    isDraw = false;
    ctx.closePath();
}

canvas.onmousemove = function(){
  if(isDraw){
    var x = event.pageX - canvas.offsetLeft;
    var y = event.pageY - canvas.offsetTop;
    ctx.lineTo(x, y);
    ctx.stroke();

  }
}

boldBtn.onclick = function(){
    ctx.lineWidth=20;
    boldBtn.classList.add('active')
    thinBtn.classList.remove('active')
    clearBtn.classList.remove('active')
}

thinBtn.onclick = function(){
    ctx.lineWidth=2;
    thinBtn.classList.add('active')
    boldBtn.classList.remove('active')
    clearBtn.classList.remove('active')
}

clearBtn.onclick = function(){
    ctx.globalCompositeOperation='destination-out';
    ctx.lineWidth=30
    clearBtn.classList.add('active');
    boldBtn.classList.remove('active')
    thinBtn.classList.remove('active')
}

nullBtn.onclick = function(){
    ctx.clearRect(0, 0, 800, 600);
    
}

saveBtn.onclick = function(){
  var urlData = canvas.toDataURL();
//   var img = new Image();
//   img.src = urlData;
//   document.body.appendChild(img);

   var downloadA = document.createElement('a');
   downloadA.setAttribute('download','保存图像');
   downloadA.href = urlData;
   downloadA.click()

}

inputColor.onchange = function(){
    ctx.strokeStyle= inputColor.value;
}

</script>
</body>
</html>

绘制图像

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<canvas id="canv" width="600" height="400"></canvas>


<script>

var canv = document.getElementById("canv")

var ctx = canv.getContext('2d')

let img = new Image();

img.src = "./202301281351070228_DRD240206PD1L4WAA+0A+FY52381C7UW+K052K04397X_5_Org_230128135008570.bmp"
img.onload = function(){
    ctx.drawImage(img, 0, 0);
    
}


</script>
    
</body>
</html>

绘制图像2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<canvas id="canv" width="600" height="400"></canvas>


<script>

var canv = document.getElementById("canv")

var ctx = canv.getContext('2d')

let img = new Image();

img.src = "./202301281351070228_DRD240206PD1L4WAA+0A+FY52381C7UW+K052K04397X_5_Org_230128135008570.bmp"
img.onload = function(){
  // 方式1
  //   ctx.drawImage(img, 0, 0);
  // 方式2
  // ctx.drawImage(img, 0, 0, 600, 400);
  // 方式3:裁切原图部分进行显示
  ctx.drawImage(img, 640, 0, 1280, 720,0, 0, 600, 400);
  
    
}


</script>
    
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值