Skip to content

坐标系线段绘制组件使用手册(coordinate-draw-line)

coordinate-draw-line 是基于 vue3 开发的一个坐标系线段绘制组件。

使用场景:

  • 阶梯数据查看与编辑;

安装

使用以下命令安装 coordinate-draw-line

bash
npm install coordinate-draw-line
# 或
yarn add coordinate-draw-line

导入组件

全局导入

main.js 中全局引入 coordinate-draw-line

ts
import {createApp} from "vue";
import App from "./App.vue";
// v3-drag-zoom 组件
import CoordinateDrawLine from "coordinate-draw-line";

createApp(App).use(CoordinateDrawLine).mount("#app");

按需导入

在需要的组件中导入 coordinate-draw-line

vue

<script setup lang="ts">
  import {CoordinateDrawLine} from "coordinate-draw-line";

</script>

<template>
  <div class="" style="width: 800px;height: 480px;">
    <coordinate-draw-line
        :x-end="200"
        :y-end="100"
    ></coordinate-draw-line>
  </div>
</template>

DEMO

点击展开源码
vue
<script setup lang="ts">
import V3aColorPicker from "../../common/v3a-color-picker.vue";
import { ref } from "vue";
import { CoordinateDrawLine, Line, LineStyle, Point } from "coordinate-draw-line";

const lineColor = ref("#000");
const lineIncrease = ref(true);
const lineWidth = ref(1);
const coordRef = ref();

const addLine = () => {
  const line = new Line(new Point(0, 0), new Point(400, 200))
    .setDull(lineIncrease.value ? "increase" : undefined)
    .setFixed(1)
    .setStyle(new LineStyle().setLineWidth(lineWidth.value).setStrokeStyle(lineColor.value));
  coordRef.value.addLine(line);
};

const onClickClear = () => {
  console.log(coordRef.value);
  coordRef.value.clearLines();
};
</script>

<template>
  <div class="flex-column">
    <div class="mb-sm flex-horiz flex-center">
      <a-space>
        <a-button @click="addLine">添加线条</a-button>
        <div class="">线宽</div>
        <a-input-number v-model="lineWidth" style="width: 80px"></a-input-number>
        <div>线条颜色:</div>
        <v3a-color-picker v-model="lineColor"></v3a-color-picker>
        <div>是否递增</div>
        <a-switch v-model="lineIncrease"></a-switch>
      </a-space>
      <div class="flex-grow"></div>
      <div class="">
        <a-button @click="onClickClear">清空</a-button>
      </div>
    </div>
    <div class="" style="height: 400px; background-color: #fff">
      <coordinate-draw-line ref="coordRef" :x-end="400" :y-end="200" />
    </div>
  </div>
</template>

<style scoped lang="less"></style>

API参数

CoordinateDrawLine

Props

参数名类型默认值是否必须说明
xStartnumber0坐标系左下角x起始大小
yStartnumber0坐标系左下角y起始大小
xEndnumber坐标系右上角x结束大小
yEndnumber坐标系右上角y结束大小
xAxisSplitint10X轴分割线的数量
yAxisSplitint10Y轴分割线的数量
splitStyleLineStyle分割线样式
axisStyleLineStyle轴线样式
lineStyleLineStyle默认线条样式
lineHoverStyleLineStyle默认鼠标悬浮在线条上样式
pointStylePointStyle默认点样式
pointHoverStylePointStyle默认鼠标悬浮在点上样式
textStyleTextStyle刻度文本样式
textDistancenumber5文本与轴线的距离
paddingnumber20坐标系与容器之间的距离

Event

事件参数说明
changing(point:Point | null, lines: Line[]) => void鼠标拖动点过程中触发
changed(point:Point | null, lines: Line[]) => void鼠标拖动完成触发一次(删除线条等也会触发一次)

Exposed

方法参数说明
addLine(line:Line)=>void添加线条
removeLine(line:line)=>void移除线条
clearLines()=>void清除所有线条
draw() => void强制绘制一次canvas

Point

属性类型说明
xnumberx坐标
ynumbery坐标
lineLine所属线条
stylePointStyle样式
hoverStylePointStyle鼠标悬浮样式

PointStyle

属性类型说明
radiusnumber半径
fillStylestring填充色
strokeStylestring边框色
lineWidthnumber边框宽度

Line

属性类型说明
startPoint起点
endPoint终点
styleLineStyle样式
hoverStyleLineStyle鼠标悬浮样式
pointsPoint[]点列表
xDullDullType单调性
yDullDullType单调性
fixednumber保留小数位数
mergeDistancenumber点合并距离(小于0将不会合并)

LineStyle

属性类型说明
strokeStylestring线条颜色
lineWidthnumber线条宽度

DullType

说明
increase单调上升
decrease单调下降
undefined无约束

Text

属性类型说明
textstring文本内容
pointPoint所在位置
align"left" | "center" | "right"对齐方式
styleTextStyle文本样式

TextStyle

属性类型说明
fontstring字体(12 Arial)
fillStylestring填充颜色(#000)

MIT Licensed | fangjc1986@qq.com