首页 > 其他分享 >canvas绘制背景图片,并控制图片大小;createPattern的使用;

canvas绘制背景图片,并控制图片大小;createPattern的使用;

时间:2022-11-25 22:34:19浏览次数:65  
标签:canvas height 画布 width tempCanvas createPattern 图片大小

1.需求:用图片填充canvas画布,并且能控制图片的大小和重复次数,实现的效果如下:

 

 

 2.HTML代码实现

 1 <html>
 2   <head>
 3     <title></title>
 4     <meta charset="utf-8" />
 5     <style>
 6       #canvas{
 7         width: 300px;
 8         height: 300px;
 9         margin: 100px 0 0 200px;
10         border: 1px solid #f00;
11       }
12     </style>
13   </head>
14   <body>
15     <canvas id="canvas" width="500" height="500"></canvas>
16     <script src="bgImage.js"></script>
17   </body>
18 </html>

3.JavaScript代码

 1 var canvas = document.getElementById("canvas");
 2 var ctx = canvas.getContext("2d");
 3 canvas.width = 300;
 4 canvas.height = 300;
 5 var img = new Image(50, 50);
 6 img.src = 't3.png';
 7 img.onload = function() {
 8   //先把加载好的图片绘制在一个临时的画布上
 9   let tempCanvas = document.createElement('canvas');
10   tempCanvas.width = 50;
11   tempCanvas.height = 50;
12   let tempCtx = tempCanvas.getContext('2d');
13   tempCtx.drawImage(img, 0, 0, this.width, this.height);
14   // 创建一个绘制背景图的模式
15   let pattern = ctx.createPattern(tempCanvas, 'repeat');
16   ctx.fillStyle = pattern;
17   ctx.fillRect( 0, 0, canvas.width, canvas.height);
18 };

3.注意点:

  (1)canvas.width 与css的width不同,canvas.width是画布的逻辑像素,

      画布内的尺寸是canvas.width和canvas.height决定的,

      css的width,height只能缩放canvas画布大小

  (2)只有把加载的图片绘制一个临时的canvas上,才能方便的控制重复单元的大小

4.参考链接:

  (1)createPattern的使用:https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern

  (2)canvas.width属性和canvas的css样式width的区别:https://blog.csdn.net/css_666/article/details/105202622

标签:canvas,height,画布,width,tempCanvas,createPattern,图片大小
From: https://www.cnblogs.com/xiaoyuxielikebai/p/16926578.html

相关文章

  • 利用canvas+js完成滑块验证码中canvas部分思路
    1.最终效果2.滑块验证码思路大概思路:设置两个画布,一个为显示图像的canvas画布,一个为拼图的block画布,block画布拼图内容从图像画布中的一部分裁剪得到(使用clip()),......
  • 小程序 canvas type="2d"
    <!--标签是在组件当中使用,组件和页面使用是有区别的--><canvas style="width:{{imgWidth}}px;height:{{imgHeight}};position:fixed;left:9999px" type="2d" id="m......
  • 使用html2canvas和jspdf将页面保存位pdf
    使用html2canvas和jspdf将页面保存位pdf<scriptsrc="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script><scriptsrc="https://unpkg.com/html2canvas@......
  • Android绘图Canvas、Paint类基本用法
    这些用法都是英文的字面意思,所以解释部分就放在代码的注释那里了,要画图,就要继承View类重写onDraw方法,要注意的是构造方法也重写一下吧,话不多说直接上代码~~~importandroid.......
  • 解决在Vue3中html2canvas图片跨域问题
    <divv-html="transformImg(textContent.policyInterpretation)"class="topicContent"></div>consttransformImg=(str)=>{constreplaceCallback=(m,......
  • 小程序canvas2D绘制印章,话不多说,直接上代码
    效果图:  CanvasContext是旧版的接口,不维护了,新版Canvas2D接口与Web一致  官方文档: https://developers.weixin.qq.com/miniprogram/dev/api/canvas/......
  • canvas绘制圆角矩形
     canvas绘制圆角矩形Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现我们假设起点为x,y.绘......
  • HTML转Canvas转图片下载
    如题HTML元素转Canvas再转图片然后下载需要用到插件:html2canvas可自行到官网下载最新版本 效果图:  示例代码:<!doctypehtml><html><head><metacharset=......
  • chrome: 保存页面中的canvas为图片(chrome 107.0.5304.110)
    一,得到图片的base641,打开页面后,在当前页面打开开发者工具菜单->更多工具->开发者工具2,在elements页面,找到目标canvas,给它加一个id,如图:  3,在console标签页,输......
  • 在Vue中使用Canvas绘制动态背景
    好家伙, 发现了,在created(){}钩子函数中使用canvas画布貌似是错误的行为 vue中canvas的使用-掘金(juejin.cn) 于是我们琢磨一下 找到cancas元素;创建cont......