| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- /**
 
-  * Shopro + qs-canvas 绘制海报
 
-  * @version 1.0.0
 
-  * @author lidongtony
 
-  * @param {Object} options - 海报参数
 
-  * @param {Object} vm - 自定义组件实例
 
-  */
 
- import sheep from '@/sheep';
 
- import QSCanvas from 'qs-canvas';
 
- import { getPosterData } from './poster';
 
- export default async function useCanvas(options, vm) {
 
-   const width = options.width;
 
-   const qsc = new QSCanvas(
 
-     {
 
-       canvasId: options.canvasId,
 
-       width: options.width,
 
-       height: options.height,
 
-       setCanvasWH: (canvas) => {
 
-         options.height = canvas.height;
 
-       },
 
-     },
 
-     vm,
 
-   );
 
-   let drawer = getPosterData(options);
 
-   // 绘制背景图
 
-   const background = await qsc.drawImg({
 
-     type: 'image',
 
-     val: drawer.background,
 
-     x: 0,
 
-     y: 0,
 
-     width,
 
-     mode: 'widthFix',
 
-     zIndex: 0,
 
-   });
 
-   await qsc.updateCanvasWH({
 
-     width: background.width,
 
-     height: background.bottom,
 
-   });
 
-   let list = drawer.list;
 
-   for (let i = 0; i < list.length; i++) {
 
-     let item = list[i];
 
-     // 绘制文字
 
-     if (item.type === 'text') {
 
-       await qsc.drawText(item);
 
-     }
 
-     // 绘制图片
 
-     if (item.type === 'image') {
 
-       if (item.d) {
 
-         qsc.setCircle({
 
-           x: item.x,
 
-           y: item.y,
 
-           d: item.d,
 
-           clip: true,
 
-         });
 
-       }
 
-       if (item.r) {
 
-         qsc.setRect({
 
-           x: item.x,
 
-           y: item.y,
 
-           height: item.height,
 
-           width: item.width,
 
-           r: item.r,
 
-           clip: true,
 
-         });
 
-       }
 
-       await qsc.drawImg(item);
 
-       qsc.restore();
 
-     }
 
-     // 绘制二维码
 
-     if (item.type === 'qrcode') {
 
-       await qsc.drawQrCode(item);
 
-     }
 
-   }
 
-   await qsc.draw();
 
-   // 延迟执行, 防止不稳定
 
-   setTimeout(async () => {
 
-     options.src = await qsc.toImage();
 
-   }, 100);
 
-   return options;
 
- }
 
 
  |