canvas绘制图片的三种方法(图文示例)

在这里插入图片描述

查看专栏目录

canvas示例教程100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。

如何使用canvas来绘制图片呢?这里有三种方法。

语法:

drawImage(image, dx, dy)
drawImage(image, dx, dy, dWidth, dHeight)
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
参数图示
在这里插入图片描述

示例效果图

在这里插入图片描述

示例源代码(共90行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-16
*/
<template>
	<div class="djs_container">
		<div class="top">
			<h3>canvas绘制图片的三种方法(图文示例)</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="primary" size="mini" @click="draw1()">绘制图片</el-button>
				<el-button type="danger" size="mini" @click="clearCanvas()">清除</el-button>
			</h4>			
		</div>
		<div class="dajianshi ">
			<canvas id="dajianshi" ref="mycanvas" width="980" height="490"></canvas>
		</div>
	</div>
</template>
<script>
	export default {
   
		data() {
   
			return {
   
				ctx: null,
				canvas: null,
				imageUrl:require('../assets/amierhan.png'),// 此图片大小990*496
				imageUrl2:require('../assets/tx.png'),  // 此图片大小75*75
			}
		},
		mounted() {
   
			this.setCanvas()
		},
		methods: {
   
			clearCanvas() {
   
				this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
			},
			setCanvas() {
   
				this.canvas = document.getElementById('dajianshi');
				if (!this.canvas.getContext) return;
				this.ctx = this.canvas.getContext("2d");
			},
			draw1() {
   
				this.clearCanvas()
				const image = new Image();
				image.src = this.imageUrl;
				image.addEventListener("load", () => {
   
					console.log(image)
				  //按照设定的尺寸,将原图缩放在其中	
				  this.ctx.drawImage(image, 0, 0, 495, 297);
				  //从原图上截取一部分,然后绘制到指定的区块中
				  this.ctx.drawImage(image, 350,350,247,148, 600, 300, 247, 148);					  
				});  
				const image2 = new Image();			  
				image2.src = this.imageUrl2;
				image2.onload=()=> {
   
				   this.ctx.drawImage(image2,700, 200);				  
				 } 			  
			},
		}
	}
</script>

<style scoped>
	.djs_container {
   
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid #992299;
		position: relative;
	}

	.top {
   
		margin: 0 auto 0px;
		padding: 10px 0;
		background: #992299;
		color: #fff;
	}

	.dajianshi {
   
		margin: 5px auto 0;
		border: 1px solid #ccc;
		width: 980px;
		height: 490px;
		background-color: #f9f9f9;
	}
</style>


canvas基本属性

属性 属性 属性
canvas fillStyle filter
font globalAlpha globalCompositeOperation
height lineCap lineDashOffset
lineJoin lineWidth miterLimit
shadowBlur shadowColor shadowOffsetX
shadowOffsetY strokeStyle textAlign
textBaseline width

canvas基础方法

方法 方法 方法
arc() arcTo() addColorStop()
beginPath() bezierCurveTo() clearRect()
clip() close() closePath()
createImageData() createLinearGradient() createPattern()
createRadialGradient() drawFocusIfNeeded() drawImage()
ellipse() fill() fillRect()
fillText() getImageData() getLineDash()
isPointInPath() isPointInStroke() lineTo()
measureText() moveTo() putImageData()
quadraticCurveTo() rect() restore()
rotate() save() scale()
setLineDash() setTransform() stroke()
strokeRect() strokeText() transform()
translate()

相关推荐

  1. 图片懒加载方式

    2024-01-16 10:32:03       10 阅读
  2. HTML5 Canvas图形绘制技术应用

    2024-01-16 10:32:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 10:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 10:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 10:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 10:32:03       18 阅读

热门阅读

  1. 【C++练级之路】【Lv.6】【STL】string类的模拟实现

    2024-01-16 10:32:03       31 阅读
  2. linux centos7 django uwsgi 部署

    2024-01-16 10:32:03       32 阅读
  3. 15.单例模式

    2024-01-16 10:32:03       28 阅读
  4. 重磅!2024版一建新教材开始预售!(新大纲版)

    2024-01-16 10:32:03       29 阅读
  5. 2024年Top 10的人工智能岗位及如何准备

    2024-01-16 10:32:03       32 阅读
  6. Mysql

    2024-01-16 10:32:03       32 阅读
  7. leetcode热题100.两数之和

    2024-01-16 10:32:03       28 阅读
  8. show processlist 显示的MySQL语句不全的解决方法

    2024-01-16 10:32:03       33 阅读
  9. K8s面试题——基础篇1

    2024-01-16 10:32:03       25 阅读