Skip to content

一个轻量级的 canvas 2d 绘图库。具有卓越的性能,支持分块渲染和局部重绘。

Notifications You must be signed in to change notification settings

zhongmeizhi/kwan-source

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kwan

一个轻量级的 canvas 2d 绘图库。具有卓越的性能,支持分块渲染和局部重绘。

安装

yarn add kwan

例子

  const ele = document.getElementById("canvasContainer");

  const scene = new Scene(ele, {
    width: 600,
    height: 300,
  });

  const rect = new shapes.Rect({
    pos: [250, 100],
    size: [100, 100],
    background: "yellow",
    border: ["8", "solid", "red"],
    borderRadius: [8],
  });

  rect.addEventListener("click", () => {
    rect.setAttrs({
      borderRadius: [Math.random() * 50 + 1],
    });
  });

  rect.addEventListener("mousemove", () => {
    console.log('mousemove');
  });

  rect.addEventListener("mouseenter", () => {
    rect.setAttrs({
      background: "red",
    });
  });

  rect.addEventListener("mouseleave", () => {
    rect.setAttrs({
      background: "yellow",
    });
  });

  const arc = new shapes.Arc({
    pos: [100, 50],
    background: "yellow",
    radius: 30,
    startAngle: 30,
    endAngle: 260,
    close: true,
    anchor: [-1, 0],
  });

  arc.animate(
    [
      { rotate: 0, pos: [100, 50], radius: 30,, opacity: 1 },
      { rotate: 360, pos: [0, 0], radius: 0,, opacity: 0 },
    ],
    {
      duration: 1000,
      iterations: Infinity,
    }
  );

  scene.append(rect, arc);

TODO_LIST

  • 版本管理
  • TS重构
  • 时序动画
  • 分块渲染
  • 局部重绘
  • 离线渲染
  • 优化层级
  • 文档
  • 引入单元测试
  • webGl

About

一个轻量级的 canvas 2d 绘图库。具有卓越的性能,支持分块渲染和局部重绘。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published