diff --git a/src/components/funAreaSelect/funAreaSelect.js b/src/components/funAreaSelect/funAreaSelect.js index 10d3cba..453bfb6 100644 --- a/src/components/funAreaSelect/funAreaSelect.js +++ b/src/components/funAreaSelect/funAreaSelect.js @@ -2,47 +2,117 @@ import React, { Component } from "react" import AreaSelect from "../areaSelete/areaSelete" import "./funAreaSelect.css" export default class FlvCom extends Component { - constructor(props){ - super(props); - this.state = { - serviceData:[], - } - } - static getDerivedStateFromProps(props){ - - return null; + constructor(props) { + super(props); + this.state = { + serviceData: [], + mode:"polygon",//polygon react } - componentDidUpdate(){ - + } + static getDerivedStateFromProps(props) { + + return null; + } + componentDidUpdate() { + + } + componentDidMount() { + let {mode} = this.state; + if(mode==="react"){ + this.setReact() + }else{ + this.setPolygon() } - componentDidMount(){ - // var canvasEl = document.getElementById(this.myRef.state.id) - // canvasEl.onclick = (e)=>{ - // var left = e.layerX; - // var top = e.layerY; - // let {serviceData} = this.state; - // serviceData.push([left,top]) - // this.setState({ - // serviceData - // },()=>{ - // this.myRef.draw() - // }) - // } - // canvasEl.oncontextmenu = (e)=>{ - // console.log(e.button) - // e.preventDefault() - // } + } + setReact() {//设置矩形 + this.count = -1;//用来判断是否生成了一个框 + var canvasEl = document.getElementById(this.myRef.state.id)//获取canvas的id 这id是动态的所以要用ref进行获取 + var mousemoveFc = (e) => { + var serviceData = JSON.parse(JSON.stringify(this.state.serviceData)); + var left1 = e.layerX; + var top1 = e.layerY; + if (this.count === 0) {//如果是第一次画就正常 + serviceData[1][1] = top1; + serviceData[2] = [left1, top1]; + serviceData[3][0] = left1; + } else {//不是第一次,也就是有框了这时候你直接就可以拖拽 + if (this.myRef.selectedIndex||this.myRef.selectedIndex===0) { + serviceData[this.myRef.selectedIndex] = [left1, top1] + switch (this.myRef.selectedIndex) { + case 0: + serviceData[1][0] = left1; + serviceData[3][1] = top1; + break; + case 1: + serviceData[0][0] = left1; + serviceData[2][1] = top1; + break; + case 2: + serviceData[1][1] = top1; + serviceData[3][0] = left1; + break; + case 3: + serviceData[0][1] = top1; + serviceData[2][0] = left1; + break; + } + } + } + this.setState({ + serviceData + }, () => { + this.myRef.draw() + }) } - change(){ - + canvasEl.addEventListener("mousedown", (e) => { + var left = e.layerX; + var top = e.layerY; + var arr = [left, top] + this.count++;//这个参数每次点击就加加这样就可以判断上面是否画图了 + if (this.state.serviceData.length === 0) {//刚按下的时候进行初始化 + let serviceData = [[...arr], [...arr], [...arr], [...arr]] + this.setState({ + serviceData + }, () => { + this.myRef.draw(); + }) + } + canvasEl.addEventListener("mousemove", mousemoveFc) + }) + canvasEl.addEventListener("mouseup", (e) => { + canvasEl.removeEventListener("mousemove", mousemoveFc) + }) + + } + setPolygon() {//设置多边形 + var canvasEl = document.getElementById(this.myRef.state.id)//获取canvas的id 这id是动态的所以要用ref进行获取 + canvasEl.onclick = (e) => { + var left = e.layerX; + var top = e.layerY; + let { serviceData } = this.state; + serviceData.push([left, top]) + this.setState({ + serviceData + }, () => { + this.myRef.draw() + }) } - render() { - let {serviceData} = this.state; - return ( -