Code Monkey home page Code Monkey logo

canvas-select's Introduction

Hi there 👋 I'm a Frontend developer

About me ✌️

Languages and Library

canvas-select's People

Contributors

heylight avatar jatypeng avatar oozm avatar yaxizhl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

canvas-select's Issues

2.14.1版本使用问题

类型接口不统一

这是我当前使用版本:
"canvas-select": "^2.14.1"

这是2.14.1版本的类型:
image

但是github上的源码上暴露出来的:
image

因为是配合了ts的使用,需要用到相应的类型,后续版本还望能够将相应类型暴露出来供使用

谢谢!

嵌套图形选中的Bug

大神您好,我们在实际开发中发现,当标注区域A位于B内部的时候,只有在不选中B的情况下才能够选中A,只要曾经选中过B,则无论如何均无法选中A。感谢大神!

初始化实例过程中出现Maximum call stack size exceeded

Vue3+ts环境,onMounted和ref都通过插件做了全局引入

<script setup lang="ts">
import CanvasSelect from 'canvas-select'
let instance:any = ref(null);
let canvasWidth = ref(800);
let canvasHeight = ref(500);

onMounted(()=>{
  instance = new CanvasSelect(
    ".canvas_container",
    "https://gd-hbimg.huaban.com/cf8c6c0ccff0356a46b3ebe3e6fbb3992442398245a34-ivJ4iC"
  );
})
</script>

在vue项目中报错”Uncaught TypeError: Cannot read properties of undefined (reading 'save') at index.ts:822:22“

<template>
  <canvas class="container"></canvas>
</template>

<script setup>
import CanvasSelect from "canvas-select";

const instance = new CanvasSelect(
    ".container",
    "https://cdn.jsdelivr.net/npm/@heylight/cdn@%5E1/img/onepiece.png"
);
const option = [
  {
    label: "rect",
    labelFillStyle: "#f00",
    textFillStyle: "#fff",
    fillStyle: "rgba(130,22,220,.6)",
    coor: [
      [184, 183],
      [275, 238]
    ],
    type: 1
  },
  {
    label: "polygon",
    active: true,
    coor: [
      [135, 291],
      [129, 319],
      [146, 346],
      [174, 365],
      [214, 362],
      [196, 337],
      [161, 288]
    ],
    type: 2
  },
  {
    label: "dot",
    coor: [345, 406],
    type: 3
  },
  {
    label: "line",
    coor: [
      [470, 155],
      [503, 230],
      [506, 298]
    ],
    type: 4
  },
  {
    label: "circle",
    coor: [369, 197],
    radius: 38,
    type: 5
  }
];
instance.labelMaxLen = 10;
instance.setData(option);
// 选中
instance.on("load", (src) => {
  console.log("image loaded", src);
});
// 添加
instance.on("add", (info) => {
  console.log("add", info);
  window.info = info;
});
// 删除
instance.on("delete", (info) => {
  console.log("delete", info);
  window.info = info;
});
// 选中
instance.on("select", (shape) => {
  console.log("select", shape);
  window.shape = shape;
});
instance.on("updated", (result) => {
  // console.log('标注结果', result)
  const list = [...result];
  list.sort((a, b) => a.index - b.index);
  output.value = JSON.stringify(list, null, 2);
});

function change(num) {
  instance.createType = num;
}

function zoom(type) {
  instance.setScale(type);
}

function fitting() {
  instance.fitZoom();
}

function changeData() {
  const data = JSON.parse(output.value);
  instance.setData(data);
}

function onFocus() {
  instance.setFocusMode(!instance.focusMode);
}
</script>

<style scoped>

</style>

屏闪问题

使用环境:
vue3.2 + vite4.3

问题呈现:
canvas标签在template中固定时,通过ref获取到canvas后,绘制正常;
动态更新src后,mousedown时就会一直屏闪复现上一图层标注后的shape

label事件

建议作者添加标签label的鼠标选中事件

请教大佬 如何设置固定尺寸

如题:
我看到实例上有 instance.scale 的属性能拿到具体尺寸,但是setScale()方法貌似不支持设置比例大小,只能通过设置ture不断增大尺寸。

谢谢作者,看到这个项目,我毫不犹豫地点了一个小星星,有个问题咨询下,我如何获取到当前选中的标记。

我的需求是,如果在按一下删除键,这时如果选中了某个标签,我就把这个标签删除掉,现在有选中事件,但如果我选中一个标签,然后又点了一下图片,这时所有图片都未选中,但这时并没有事件触发,如果这是按了一下删除键,但这时我又不知道这个标签是不是实际选中状态的,所以我不知道该不该删除这个标签,不知道我说明白了没。辛苦作者了,谢谢!

在VUE中一直提示"HTMLCanvasElement is required!"

<template>
  <main>
    <div class="part0"></div>
    <div class="part1">
      <canvas class="can0"></canvas>
    </div>
    <div class="part2">
      <div></div>
      <div></div>
    </div>
  </main>
</template>

<script setup>
import {watch} from "vue";
import CanvasSelect from "canvas-select";

const can1 = new CanvasSelect('can0', 'https://unpkg.com/[email protected]/one.jpg');
let props = defineProps({
  int0: {
    type: Number,
    default: 0
  }
});
watch(props, (val) => {
  console.log(val.int0);
});
</script>

建议新增框选模式

大神您好,可以考虑新增change(6)作为框选模式,功能为拖拽一个选择框,对框内的已标注图形进行全选。

已标注内容选中问题

新版本在调用change(1-5)之后,需要调用change(0),点击标注图形内部才能选中已标注内容,建议可以考虑跳过change(0)的步骤,在”创建模式“下点击已标注内容内部来实现对已标注内容的选中。
感谢大神维护了如此优秀的项目!

vue2中使用问题

目前在vue2中使用该组件,使用方式如下:
import CanvasSelect from 'canvas-select';

const instance = new CanvasSelect('.markup-container');
let option = ...

instance.setData(option);

其中,在调用setData时报错,异常信息如下:
WX20231017-172135

请问这种情况该如何解决?在线等,谢谢

动态切换图片

在有框选区域时,动态切换图片后,点击切换后的图片上的框选区域会跳到上一张图片,再次点击会又跳回去

增加固定长宽比的长方形

我这边需要一个可以画一个固定宽高比的长方形,不知道是否可以帮忙加上,
又或者能否指导我给加上?目前项目比较着急需要这个,感谢!
就是在画的时候,是个长方形,长宽比是固定的,比如16:9,我拉任何一边时,增加或缩小,都是按16:9的比例进行变化的,
不知道我说明白了没。

缩放比例不准确问题

第一次调用setScale进行缩小时,缩小比例大于5%,导致再次调用setScale放大时,恢复不到原始比例,后续缩放比例正常。

firefox无法使用

由于firefox不支持touchEvent constructor,所以firefox无法使用该仓库进行标注

在查看模式下(createType: -1), 如何禁止对形状的删除和改变

首先感谢作者.

我现在有一个需求, 就是希望要有一个查看模式, 用户只能点击选中某个形状, 但是不能拖动, 改变, 删除形状. 但是在 createType为-1时, 用户确实不能拖动形状, 但是却可以删除和改变形状.

如果用 lock 模式的话, 虽然是不能删除和改变了, 但是用户也不能选中形状了, 同时也不能放大图片.

想请教一下, 有什么办法能阻止用户的删除, 改变形状的形为吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.