操作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" >
var cas = document. getElementById ( 'cas' ) ;
var ctx = cas. getContext ( '2d' ) ;
ctx. moveTo ( 10 , 10 ) ;
ctx. lineTo ( 125 , 100 ) ;
ctx. lineWidth = '10' ;
ctx. strokeStyle = '#0f0' ;
ctx. lineCap = 'square' ;
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. lineTo ( 125 , 100 ) ;
ctx. lineWidth = '10' ;
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. 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" ) ;
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" ) ;
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" ) ;
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>
var canvas = document. querySelector ( '#canv' )
var ctx = canvas. getContext ( '2d' ) ;
ctx. lineJoin = 'round'
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>
var canvas = document. querySelector ( '#canv' )
var ctx = canvas. getContext ( '2d' ) ;
ctx. lineJoin = 'round'
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 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 ( ) {
ctx. drawImage ( img, 640 , 0 , 1280 , 720 , 0 , 0 , 600 , 400 ) ;
}
< / script>
< / body>
< / html>