96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
1
2
3
4
|
import React, { Component } from "react"
import AreaSelect from "../areaSelete/areaSelete"
import "./funAreaSelect.css"
export default class FlvCom extends Component {
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
5
6
7
8
9
|
constructor(props) {
super(props);
this.state = {
serviceData: [],
mode:"polygon",//polygon react
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
10
|
}
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
}
static getDerivedStateFromProps(props) {
return null;
}
componentDidUpdate() {
}
componentDidMount() {
let {mode} = this.state;
if(mode==="react"){
this.setReact()
}else{
this.setPolygon()
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
25
|
}
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
}
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()
})
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
66
|
}
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
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()
})
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
99
|
}
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
100
101
102
103
104
|
canvasEl.oncontextmenu = (e) => {
e.preventDefault()
if (e.button === 2) {
canvasEl.onclick = null
}
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
105
|
}
|
6bd5ee16
Zhang Zhuo
更新多功能组件 -张卓
|
106
107
108
109
110
111
112
113
114
115
116
117
|
}
change() {
}
render() {
let { serviceData } = this.state;
return (
<div className="funAreaSelectCss">
<AreaSelect ref={(inst) => { this.myRef = inst }} serviceData={serviceData} change={(val) => this.change(val)}></AreaSelect>
</div>
)
}
|
96108619
Zhang Zhuo
更新添加文字功能 -张卓
|
118
|
}
|