Skip to content

t-canvas

Canvas 画布

组件介绍

t-canvas 是一个统一的 Canvas 画布组件,简化了 Canvas 的初始化配置,增加了 PC 端对 touchmove 事件的支持,通过事件返回绘制对象,使 Canvas 的使用更加简单。组件的 API 使用方法与原生 Canvas 一致,适用于各种需要绘制图形、动画、图表等场景。

平台兼容

HarmonyH5AndroidiOS小程序UTS

基础用法

基础用法参考 demo/canvas/canvas.uvue,通过 initFinished 事件获取 Canvas 上下文进行绘制。

vue
<template>
  <t-canvas ref="canvasRef" class="twh-500-300 bg-#fff r-20" @initFinished="canvasInit"></t-canvas>
</template>

<script setup>
const canvasRef = ref<any>(null);

function canvasInit(context) {
  const ctx = context.getContext('2d');
  
  // 绘制矩形
  ctx.fillStyle = '#2979ff';
  ctx.fillRect(50, 50, 100, 100);
  
  // 绘制圆形
  ctx.beginPath();
  ctx.arc(250, 150, 50, 0, 2 * Math.PI);
  ctx.fillStyle = '#4caf50';
  ctx.fill();
  
  // 绘制文本
  ctx.font = '20px Arial';
  ctx.fillStyle = '#333';
  ctx.textAlign = 'center';
  ctx.fillText('Hello Canvas', 250, 250);
}

// 导出 Canvas 为图片
async function exportImage() {
  const imageUrl = await canvasRef.value.toDataURL();
  console.log('Image URL:', imageUrl);
}
</script>

Props

属性名说明类型默认值
path点击组件后跳转的页面路径;为空时仅响应事件string''
hover是否启用点击效果booleanfalse
type组件主题类型,可选 infoprimaryerrorwarningsuccessstring''
disabled是否禁用booleanfalse
effect组件显示主题,可选 normaldarklightplainstring''
size组件尺寸,可选 largemediumsmallministring''

Events

事件名说明回调参数
click点击时触发UniPointerEvent
initFinished组件初始化完成时触发,返回 Canvas 上下文CanvasContext
touchstart触摸开始时触发UniTouchEvent
touchend触摸结束时触发UniTouchEvent
touchmove触摸移动时触发UniTouchEvent
touchcancel触摸取消时触发UniTouchEvent
transitionend动画结束时触发-

Methods

方法名说明返回值
toDataURL将 Canvas 内容导出为图片Promise<string>,图片地址