npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@sunkey/wx-canvas

v2.2.0

Published

微信小程序Canvas绘图库,支持Taro和原生

Downloads

4

Readme

这是什么?

小程序中的canvas操作封装,使其更易用,目前支持wx原生Taro

适用场景:

  • 绘制海报图片(支持引用远程图片)
  • 实时更新海报内容
  • 导出、下载
  • 支持Offscreen Canvas

不适合:

  • 动画
  • 复杂的需求

TODO

  • cantas.contextType 似乎只支持 '2d' ? 'webgl' 会报错

如何使用

npm i wx-canvas

Taro示例:获取canvas dom对象,并在其上绘制 一张远程图片 和 一段文字

function Poster(){
  
  // useReady 需要等到components ready 才能获取到 DOM
  useReady(async ()=>{
    // 如果是Taro环境,传入Taro对象,否则默认使用 wx
    // baseSize对应你设置的 <canvas> style.width,后续draw时传入的数值此为基准自动转换
    const $c = new WxCanvas({ Taro: Taro, baseSize : 500 })
    await $c.init({ id : 'poster', width: 2000, height : 1000 })
    // Offscreen Canvas
    // await $c.init({ compInst: this<the component to attach>,  width: 2000, height : 1000 })
    // 画一张图
    $c.drawImage(
      'https://tse3-mm.cn.bing.net/th/id/OIP-C.gRcZ-sVZdY741hyDj9ZpgwAAAA?pid=ImgDet&rs=1',
      // ImageParams
      { x:250, y:250, w:250, h:250 }
    )
    // 画一段文字,超出 lineNum x width 区域的会省略
    $c.drawText('弄范德萨发大撒范德萨发大水范德萨发大水范德萨',
      // TextParams
      { x:0, width:200, y:0, lineNum: 4, fontSize:40, lineHeight: 100, baseLine:'bottom' }
    )
    // 清空画布
    setTimeout(()=> $c.clear(), 3000 )
  })

  // canvasId & id 必须相同
  return <Canvas
    canvasId='poster'
    id='poster'
    type="2d"
    style={{ width: '500rpx', height: '500rpx' }}/>
}

References

async init():void

获取DOM并初始化,需在实例化后调用并等待完成才能开始draw

const $c = new WxCanvas('id')
await $wxCanvas.init()

drawText( String text, TextParams params = {} ):void

绘制文本

TextParams

| 字段名 | 类型 | 必填 | 描述 | | -------------- | ---------------- | ---- | ------------------------------------------------------------ | | x | Number(单位:rpx) | 是 | 坐标 | | y | Number(单位:rpx) | 是 | 坐标 | | fontSize | Number(单位:rpx) | 是 | 文字大小 | | color | String | 否 | 颜色 | | opacity | Int | 否 | 1为不透明,0为透明 | | lineHeight | Number(单位:rpx) | 否 | 行高 | | lineNum | Int | 否 | 根据宽度换行,最多的行数 | | width | Number(单位:rpx) | 否 | 没有指定为画布宽度 | | marginLeft | Number(单位:rpx) | 否 | 当text字段为Object可以使用,用来控制多行文字间距 | | marginRight | Number(单位:rpx) | 否 | 当text字段为Object可以使用,用来控制多行文字间距 | | textDecoration | String | 否 | 目前只支持 line-through(贯穿线),默认为none | | baseLine | String | 否 | top| middle|bottom基线对齐方式 | | textAlign | String | 否 | left|center|right对齐方式 | | zIndex | Int | 否 | 层级,越大越高 | | fontFamily | String | 否 | 小程序默认字体为'sans-serif', 请输入小程序支持的字体,例如:'STSong' | | fontWeight | String | 否 | 'bold'加粗字体,目前小程序不支持 100 - 900 加粗 | | fontStyle | String | 否 | 'italic'倾斜字体 |

drawImage( String url, ImageParams params = {} ):void

绘制图片

ImageParams

| 字段 | 类型 | 必填 | 描述 | | ------------ | ---------------- | ---- | ----------------------------------------- | | x | Number | 是 | 右上角的坐标 | | y | Number | 是 | 右上角的坐标 | | w | Number | 是 | 宽度 | | h | Number | 是 | 高度 | | mode | String | 否 | 填充模式,默认为 'cover' | | borderRadius | Number | 否 | 圆角,跟css一样 | | borderWidth | Number | 否 | 边框宽度 | | borderColor | String | 否 | 边框颜色 | | zIndex | Int | 否 | 层级,越大越高 |

drawBlock( BlockParams params = {} ):void

绘制方块

BlockParams

| 字段名 | 类型 | 必填 | 描述 | | --------------- | ---------------- | ---- | -------------------------------------- | | x | Number(单位:rpx) | 是 | 块的坐标 | | y | Number(单位:rpx) | 是 | 块的坐标 | | width | Number(单位:rpx) | 否 | 如果内部有文字,由文字宽度和内边距决定 | | height | Number(单位:rpx) | 是 | | | paddingLeft | Number(单位:rpx) | 否 | 内左边距 | | paddingRight | Number(单位:rpx) | 否 | 内右边距 | | borderWidth | Number(单位:rpx) | 否 | 边框宽度 | | borderColor | String | 否 | 边框颜色 | | backgroundColor | String | 否 | 背景颜色 | | borderRadius | Number(单位:rpx) | 否 | 圆角 | | text | Object | 否 | 块里面可以填充文字,参考texts字段解释 | | zIndex | Int | 否 | 层级,越大越高 |

drawLine( LineParams params = {} ):void

绘制直线

LineParams

| 字段 | 类型 | 必填 | 描述 | | ------ | ---------------- | ---- | -------------- | | startX | Number(单位:rpx) | 是 | 起始坐标 | | startY | Number(单位:rpx) | 是 | 起始坐标 | | endX | Number(单位:rpx) | 是 | 终结坐标 | | endY | Number(单位:rpx) | 是 | 终结坐标 | | width | Number(单位:rpx) | 是 | 线的宽度 | | color | String | 否 | 线的颜色 | | zIndex | Int | 否 | 层级,越大越高 |

Credit

Forked from taro-canvas