Skip to content
# t-canvas

Canvas 画布

t-canvas 组件介绍 ​

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

t-canvas 平台兼容 ​

HarmonyH5AndroidiOS小程序UTS
✅✅✅✅✅✅

t-canvas 基础用法 ​

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

vue
<template>
	<view class="p-15">
		<t-card title="Canvas 画布" class="mb-15"
			sub-title="统一写法 初始化更简单 增加pc端支持touchmove事件,通过事件返回绘制对象,简化了cannvas初始化配置等。Api使用方法和canvas一致"></t-card>
		<t-canvas class='tvg h-200 r-5 mb-15' @initFinished="initFun"></t-canvas>
	</view>
</template>

<script setup>
	/**
	 * 初始化完成回调
	 */
	function initFun(canvasContext : CanvasContext) {
		// 获取 2D 绘图上下文
		const ctx = canvasContext.getContext('2d')!;

		// 绘制圆角矩形
		// drawRoundedRect(ctx, 10, 10, 100, 100, 15)

		// 保存状态
		ctx.save();

		// 清除画布
		ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
		// 绘制笑脸
		ctx.beginPath();
		ctx.lineWidth = 2;
		ctx.fillStyle = '#007BFF';
		ctx.arc(75, 75, 50, 0, Math.PI * 2, true);
		ctx.moveTo(110, 75);
		ctx.arc(75, 75, 35, 0, Math.PI, false);
		ctx.moveTo(65, 65);
		ctx.arc(60, 65, 5, 0, Math.PI * 2, true);
		ctx.moveTo(95, 65);
		ctx.arc(90, 65, 5, 0, Math.PI * 2, true);
		ctx.stroke();

		// 恢复状态
		ctx.restore();
	}
</script>

t-canvas Props ​

属性名说明类型默认值
path点击组件后跳转的页面路径;为空时仅响应事件string''
hover是否启用点击效果booleanfalse
type组件主题类型,可选 info、primary、error、warning、successstring''
disabled是否禁用booleanfalse
effect组件显示主题,可选 normal、dark、light、plainstring''
size组件尺寸,可选 large、medium、small、ministring''

t-canvas Events ​

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

Methods ​

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