1.0.0 • Published 2 years ago

canvas-path-design v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

安装

npm install canvas-path-design

使用

以下所有的 cxt 均代表上下文绘图环境对象 <=> let cxt = canvas.getContext('2d');

基本上所有图形都只是规划路径,而没有调用 stroke 进行描边绘制,使用者可以根据自身需求进行先描边或是先填充

一、路径绘制

直线

cxt.rabbitLine(startX, startY, endX, endY);
/*
    startX:直线开始的横坐标;
    startY:直线开始的纵坐标;
    endX:直线结束的横坐标;
    endY:直线结束的纵坐标;
  */

贝塞尔二次曲线绘制直线

cxt.rabbitBezierLine(startX, startY, endX, endY);
/*
    startX:直线的开始横坐标x
    startY:直线的开始纵坐标y
    endX:直线的结束横坐标x
    endY:直线的结束纵坐标y
  */

三角形路径

cxt.rabbitTriangle(x1, y1, x2, y2, x3, y3);
/*
    x1,y1:三角形第一个点的横纵坐标
    x2,y2:三角形第二个点的横纵坐标
    x3,y3:三角形第三个点的横纵坐标
  */

矩形路径

cxt.rabbitRect(startX, startY, width, height);
/*
    startX:矩形的左上角横坐标;
    startY:矩形的左上角纵坐标;
    width:矩形的宽度;
    height:矩形的高度;
  */

圆形路径

cxt.rabbitCircle(x, y, radius, (anticlockwise = false));
/*
    x:圆形路径的横坐标;
    y:圆形路径的纵坐标;
    radius:圆的半径大小;
    anticlockwise:是否逆时针; => default is false
  */

五角星路径

cxt.rabbitStar(r, R, offsetX, offsetY, rot);
/*
    r:内圆半径
    R:外圆半径
    offsetX:五角星的横坐标
    offsetY:五角星的纵坐标
    rot:旋转角度
  */

填充五角星

cxt.rabbitFillStar(r, R, offsetX, offsetY, rot, fillStyle);
/*
    r:内圆半径
    R:外圆半径
    offsetX:五角星的横坐标
    offsetY:五角星的纵坐标
    rot:旋转角度
    fillStyle:填充样式
  */

太极图

cxt.rabbitGossip(x, y, radius, rot);
/*
      x:太极图的横坐标;
      y:太极图的纵坐标;
      radius:太极图的半径;
      rot:旋转角度  => 方便做动画使用
  */

绘制任意多边形路径

cxt.rabbitPolygon(coordinates);
/*
    coordinates:[x1,y1,x2,y2,x3,y3,...]
    数组项目需要构成偶数对,每两个项构成一个点坐标
  */

绘制心形路径

cxt.rabbitHeart(x, y, radius, (scaleX = 6), (scaleY = 6));
/*
    x,y:心形凹陷处横纵坐标;
    scaleX:x方向伸缩;
    scaleY:y方向伸缩;
  */

绘制圆角矩形路径

cxt.rabbitRoundRect(x, y, width, height, (radius = 20));
/*
    x,y:矩形左上角的位置;
    width,height:矩形宽和高;
    radius:矩形圆角大小 =>default = 20
  */

二、动画效果

旋转的太极图

// 直接调用该函数传参即可。
ActiveGossip(
  pen /*传入画笔=>上下文绘图环境对象 */,
  clearX /*要清除的画布的左上角横坐标*/,
  clearY /*要清除的画布的左上角横纵坐标*/,
  WIDTH /*要清除的画布的宽度*/,
  HEIGHT /*要清除的画布的高度*/,
  centerX /*八卦图圆心横坐标*/,
  centerY /*八卦图圆心纵坐标*/,
  RADIUS /*八卦图圆半径*/,
  ROTATE /*初始旋转角度*/,
  SPEED /*旋转速度*/,
  COLOR /*画布填充的颜色*/
);

开源协议

ISC