From 9f90f790c672413580725cfb5c0359f555b91bd6 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期三, 09 九月 2020 15:42:22 +0800 Subject: [PATCH] fix: example app --- src/components/player/index.vue | 108 ++++++++++++++++++++++++----------------------------- 1 files changed, 49 insertions(+), 59 deletions(-) diff --git a/src/components/player/index.vue b/src/components/player/index.vue index 1e5fa58..e73f92b 100644 --- a/src/components/player/index.vue +++ b/src/components/player/index.vue @@ -1,6 +1,6 @@ <template> <div class="video-player"> - <canvas id="area-canvas" ref="areaCanvas" ></canvas> + <canvas v-show="showArea" id="area-canvas" ref="areaCanvas" :width="canvasWidth" :height="canvasHeight"></canvas> <video ref="videoPlayer" :poster="poster" preload="auto" muted></video> <div class="controls"> <!-- 鍏ㄥ睆 --> @@ -41,6 +41,10 @@ isGb: { type: Boolean, default: false + }, + showArea: { + type: Boolean, + default: true } }, @@ -62,9 +66,14 @@ arrow: [], polygon: [] }, - showProportion: 3.65, + //showProportion: 3.2, + //showProportionY: 3.58, + showProportion: 1.036, + showProportionY: 1.039, canvas: null, - ctx: null + ctx: null, + canvasWidth: 0, + canvasHeight: 0, }; }, watch: { @@ -170,11 +179,11 @@ _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion); _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion); _this.ctx.stroke(); - _this.showRemarks( - v.location[0].x / _this.showProportion, - v.location[0].y / _this.showProportion, - v.name - ); + // _this.showRemarks( + // v.location[0].x / _this.showProportion, + // v.location[0].y / _this.showProportion, + // v.name + // ); _this.canvas.style.cursor = "default"; if (e && _this.ctx.isPointInStroke(e.offsetX, e.offsetY)) { // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓� @@ -206,11 +215,11 @@ _this.ctx.lineTo(v.location[3].x / _this.showProportion, v.location[3].y / _this.showProportion); _this.ctx.lineTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion); _this.ctx.stroke(); - _this.showRemarks( - v.location[0].x / _this.showProportion, - v.location[0].y / _this.showProportion, - v.name - ); + // _this.showRemarks( + // v.location[0].x / _this.showProportion, + // v.location[0].y / _this.showProportion, + // v.name + // ); _this.canvas.style.cursor = "default"; if (e && _this.ctx.isPointInPath(e.offsetX, e.offsetY)) { // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓� @@ -294,17 +303,17 @@ } _this.ctx.strokeStyle = "yellow"; _this.ctx.beginPath(); - _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion); + _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportionY); for (let i = 1; i < v.location.length; i++) { - _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportion); + _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportionY); } _this.ctx.closePath(); _this.ctx.stroke(); - _this.showRemarks( - v.location[v.location.length - 1].x / _this.showProportion, - v.location[v.location.length - 1].y / _this.showProportion, - v.name - ); + // _this.showRemarks( + // v.location[v.location.length - 1].x / _this.showProportion, + // v.location[v.location.length - 1].y / _this.showProportionY, + // v.name + // ); _this.canvas.style.cursor = "default"; if (e && _this.ctx.isPointInPath(e.offsetX, e.offsetY)) { // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓� @@ -316,15 +325,15 @@ // 灏嗗綋鍓嶅厓绱犳爣绾� _this.ctx.strokeStyle = "red"; _this.ctx.beginPath(); - _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion); + _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportionY); for (let i = 1; i < v.location.length; i++) { - _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportion); + _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportionY); } _this.ctx.closePath(); _this.ctx.stroke(); _this.showRemarks( v.location[v.location.length - 1].x / _this.showProportion, - v.location[v.location.length - 1].y / _this.showProportion, + v.location[v.location.length - 1].y / _this.showProportionY, v.name ); _this.canvas.style.cursor = "pointer"; @@ -348,27 +357,9 @@ this.Camera.getCameraTask(); }); }, - async initCanvas(id){ - - //this.canvas = document.querySelector("#area-canvas"); - this.canvas = this.$refs.areaCanvas; - this.ctx = this.canvas.getContext("2d"); - - // this.Camera.getPolygon();x:758,y:280 - // console.log(this.Camera.canvasData); - const rsp = await getAllPolygon({ cameraId: id }); - debugger - if (rsp && rsp.success) { - this.canvasData = { - line: rsp.data.line, - arrow: rsp.data.arrow, - polygon: [{id:'uuid', name: '澶氳竟褰�1', location: [{ x: 735, y: 155 }, { x: 830, y: 156 }, { x: 809, y: 351 }, { x: 809, y: 364 }, { x: 753, y: 396 }, { x: 755, y: 520 },{ x: 706, y: 524 },{ x: 722, y: 392 },{x:758,y:280},{ x: 735, y: 155 }] }], - //rect: rsp.data.rect - rect: [{id:'uuid', name: '鐭╁舰1', location: [{ x: 20, y: 30 }, { x: 20, y: 60 }, { x: 100, y: 60 }, { x: 100, y: 30 }] }] - }; - } - debugger - this.clickSelect(this.canvasData); + setWidthHeight(){ + this.canvasWidth = this.$refs.videoPlayer.offsetWidth; + this.canvasHeight = this.$refs.videoPlayer.offsetHeight; }, async initArea(){ console.log('init') @@ -390,12 +381,19 @@ }, mounted() { this.clickStart(); + //鑾峰彇video瀹介珮骞剁粰鍖哄煙canvas璧嬪�� + this.setWidthHeight(); + window.addEventListener('resize',()=>{ + //this.setWidthHeight(); + //this.initArea(); + }); this.$nextTick(()=>{ this.canvas = this.$refs.areaCanvas; this.ctx = this.canvas.getContext("2d"); - this.ctx.lineWidth = '1' - this.initArea() - + this.ctx.lineWidth = 1; + + this.initArea(); + }) }, beforeDestroy() { @@ -407,23 +405,15 @@ <style lang="scss"> #area-canvas{ - width: 100%; - height: 100%; background: transparent; position: absolute; top: 0; left: 0; + padding: 0; + width: 100%; + height: 100%; } -// .cavas{ -// width: 100%; -// height: 100%; -// position: absolute; -// top: 0; -// left: 0; -// canvas{ -// background: transparent!important; -// } -// } + video { object-fit: fill; width: 100%; -- Gitblit v1.8.0