Skip to content
目录

<ex-canvas>

<ex-canvas>画布组件,可用于绘制一些自定义图形,如:线段、矩形、圆形、椭圆、图片、文本等,从而实现复杂图形的展示。

属性

Canvas 组件自身相关的属性均是以方法调用的形式来进行设置的,详见下面示例部分

样式

事件


lineWidth

备注:设置stroke的线粗细

参数:@param(widthValue) 粗细值,支持px,hm 单位, 如果不写单位就是dp

属性名类型说明示例
widthValueNumber|Stringstroke的线粗细widthValue:5

lineColor

备注:设置stroke的颜色

参数:@param(colorHex) 颜色16进制

属性名类型说明示例
colorHexStringstroke的颜色colorHex:#FF0000

lineCap

备注:设置线头样式

参数:@param(value) 0:LineCapButt, , 1:LineCapRound 2:LineCapSquare

属性名类型说明示例
valueNumber线头样式value:0

lineJoin

备注:设置折线折点样式

参数:@param(value) 0:LineJoinMiter, , 1:LineJoinRound 2:LineJoinBevel

属性名类型说明示例
valueNumber折线折点样式value:0

drawLine

备注:根据入参,在起始点与终点之间画一条线段

参数:@param(fraomX, fromY, toX, toY)

属性名类型说明示例
fromXNumber|String起点的x值,支持px,hm 单位, 如果不写单位就是dpfromX:100
fromYNumber|String起点的y值,支持px,hm 单位, 如果不写单位就是dpfromY:170
toXNumber|String终点的x值,支持px,hm 单位, 如果不写单位就是dptoX:100
toYNumber|String终点的y值,支持px,hm 单位, 如果不写单位就是dptoY:490

strokeRect

备注:画矩形

参数:@param(x, y, w, h)

属性名类型说明示例
xNumber|String矩形左上角坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:20
yNumber|String矩形左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:20
wNumber|String矩形宽,支持px,hm 单位, 如果不写单位就是dpw:50
hNumber|String矩形高,支持px,hm 单位, 如果不写单位就是dph:50

strokeEllipse

备注:画椭圆

参数:@param(x, y, trailX, trailY)

属性名类型说明示例
xNumber|String椭圆所在矩形左上角坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:100
yNumber|String椭圆所在矩形左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:400
trailXNumber|String椭圆所在矩形右下角坐标点的x值,支持px,hm 单位, 如果不写单位就是dptrailX:300
trailYNumber|String椭圆所在矩形右下角坐标点的y值,支持px,hm 单位, 如果不写单位就是dptrailY:500

strokeCircle

备注:画圆形

参数:@param(x, y, radius)

属性名类型说明示例
xNumber|String圆心坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:200
yNumber|String圆心坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:300
radiusNumber|String半径 , 支持px,hm 单位, 如果不写单位就是dpradius:20

arc

备注:画弧形

参数:@param(x, y, radius, startAngle, endAngle, clockwise)

属性名类型说明示例
xNumber|String圆心坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:200
yNumber|String圆心坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:300
radiusNumber|String半径 , 支持px,hm 单位, 如果不写单位就是dpradius:20
startAngleNumber起始弧度startAngle:Math.PI / 4
endAngleNumber结束弧度endAngle:Math.PI / 5
clockwiseBooleanture 顺时针 , false 逆时针clockwise:true

fillColor

备注:设置填充颜色

参数:@param(colorHex)

属性名类型说明示例
colorHexStringstroke的颜色colorHex:#FF0000

fillRect

备注:填充矩形

参数:@param(x, y , w, h)

属性名类型说明示例
xNumber|String矩形左上角坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:80
yNumber|String矩形左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:300
wNumber|String矩形宽,支持px,hm 单位, 如果不写单位就是dpw:30
hNumber|String矩形高,支持px,hm 单位, 如果不写单位就是dph:30

fillEllipse

备注:填充椭圆

参数:@param(x, y , trailX, trailY)

属性名类型说明示例
xNumber|String椭圆所在矩形左上角坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:100
yNumber|String椭圆所在矩形左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:600
trailXNumber|String椭圆所在矩形右下角坐标点的x值,支持px,hm 单位, 如果不写单位就是dptrailX:300
trailYNumber|String椭圆所在矩形右下角坐标点的y值,支持px,hm 单位, 如果不写单位就是dptrailY:700

fillCircle

备注:填充圆形

参数:@param(x, y , raduis)

属性名类型说明示例
xNumber|String圆心坐标点的x值,支持px,hm 单位, 如果不写单位就是dpx:100
yNumber|String圆心坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:300
raduisNumber|String半径 , 支持px,hm 单位, 如果不写单位就是dpraduis:20

fontSize

备注:设置绘制文本字号

参数:@param(size)

属性名类型说明示例
sizeNumber字号大小size:20

textColor

备注:设置绘制文本字色

参数:@param(colorHex)

属性名类型说明示例
colorHexStringstroke的颜色colorHex:#FF0000

fillText

备注:绘制文本

参数:@param(text, x, y, maxWidth)

属性名类型说明示例
textString文本text:Tenon
xNumber|String文本左上角坐标x值 , 支持px,hm 单位, 如果不写单位就是dpx:100
yNumber|String文本左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:100
maxWidthNumber|String可选。允许的最大文本宽度maxWidth:100

drawImage

备注:绘制图片

参数:@param(src, x, y, width, height)

属性名类型说明示例
srcString图片资源链接,远程url或本地图片名src:https://xxx.png
xNumber|String图片左上角坐标x值 , 支持px,hm 单位, 如果不写单位就是dpx:100
yNumber|String图片左上角坐标点的y值,支持px,hm 单位, 如果不写单位就是dpy:100
widthNumber|String图片宽 ,支持px,hm 单位, 如果不写单位就是dpwidth:100
heightNumber|String图片高 ,支持px,hm 单位, 如果不写单位就是dpheight:100

示例


Tenon Vue

javascript
// entry.js
import Tenon from '@hummer/tenon-vue';

import app from './app.vue';
import ExCanvas from '@hummer/vue-plugin-canvas';

Tenon.register(ExCanvas);
Tenon.render(app);
html
<!-- App.vue -->
<template>
  <ex-canvas class="canvas" ref="canvas"></ex-canvas>
</template>
<style lang="less" scoped>
.canvas{
  width: 750hm;
  height: 1500hm;
  overflow: hidden;
}
</style>
<script>
  export default{
    mounted() {
        this.drawCanvas(parseFloat(Hummer.env.deviceWidth), parseFloat(Hummer.env.deviceHeight),this.$refs.canvas)
    },
    methods: {
      drawCanvas(width, height,canvas) {
        this.drawCircle(width, height, canvas)
      },
      drawCircle(width, height, canvas) {
        canvas.fillCircle('200px', '300px', '50px')
        canvas.strokeCircle(200, 300, 20)
        canvas.arc(300, 300, 20, Math.PI / 4, Math.PI / 5, false)
        canvas.strokeEllipse(100, 400, 300, 500)
        canvas.fillEllipse(100, 600, 300, 700)
      }
    }
  }
</script>

更多用法,可参考Tenon Vue 官方示例

Tenon React

支持中