canvasSensor.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <div class="canvasPanel">
  3. <canvas id="canvas" width="1000" height="500"></canvas>
  4. <canvas id="canvasA" width="1000" height="500"></canvas>
  5. </div>
  6. </template>
  7. <script>
  8. //import from '';
  9. export default {
  10. name: "canvasSensor", //
  11. components: {},
  12. data() {
  13. return {
  14. // modelImgSrc: require("@/assets/common/image/others/carTopView.png"),
  15. aSrc: require("@/assets/common/image/others/sensorIcon.png"),
  16. ctx: null,
  17. ctxBg: null,
  18. imgBg: null,
  19. imgIcon: null,
  20. };
  21. },
  22. props: {
  23. coordinate: {
  24. type: Object,
  25. default: { x: 0, y: 0, h: 60 },
  26. },
  27. modelImgSrc: {
  28. type: String,
  29. default: require("@/assets/common/image/others/carTopView.png"),
  30. },
  31. },
  32. watch: {
  33. coordinate(val) {
  34. this.draw(val);
  35. },
  36. modelImgSrc(val) {
  37. this.drawBg();
  38. },
  39. },
  40. methods: {
  41. draw1(data) {
  42. // var ctx = document.getElementById("canvas").getContext("2d");
  43. // var ctxA = document.getElementById("canvasA").getContext("2d");
  44. // ctx.translate(960, 250);
  45. // ctx.rotate(Math.PI / 2);
  46. // var img = new Image();
  47. // img.onload = () => {
  48. // ctxA.drawImage(img, 0, 0, 1000, 500);
  49. // ctx.translate(960, 250);
  50. // ctx.rotate(Math.PI/2);
  51. // ctxA.translate(60, 60);
  52. // img1.src = "";
  53. // ctx.save();
  54. // };
  55. // console.log(ctx);
  56. // ctx.save();
  57. var img1 = new Image();
  58. img.src = this.modelImgSrc;
  59. img1.src = this.aSrc;
  60. img1.onload = () => {
  61. ctx.drawImage(img1, 0, 0, 41, 29);
  62. ctx.rotate(-Math.PI / 2);
  63. ctx.translate(-960, -250);
  64. };
  65. setTimeout((_) => {
  66. // ctx.save();
  67. // img1.src = this.aSrc;
  68. ctx.clearRect(-250, -40, 500, 1000);
  69. ctx.drawImage(img1, 30, 30, 41, 29);
  70. // ctx.restore();
  71. }, 1000);
  72. // setTimeout((_) => {
  73. // // ctx.save();
  74. // // img1.src = this.aSrc;
  75. // // ctx.clearRect(-250,960,1000,500)
  76. // ctx.clearRect(-250,-40,500,1000)
  77. // ctx.drawImage(img1, -10, 510, 29, 41);
  78. // // ctx.restore();
  79. // }, 2000);
  80. // setTimeout((_) => {
  81. // ctx.clearRect(-250,-40,500,1000)
  82. // ctx.drawImage(img1, -180, 810, 29, 41);
  83. // }, 3000);
  84. // setTimeout((_) => {
  85. // ctx.save();
  86. // img1.src = this.aSrc;
  87. // ctx.drawImage(img, -60, -60, this.width, this.height);
  88. // ctx.drawImage(img1, 0, 0, 15, 20);
  89. // }, 4000);
  90. },
  91. draw(data) {
  92. if (data.x === "" || data.y === "" || data.h === "") return;
  93. this.ctx.clearRect(-250, -40, 500, 1000);
  94. this.ctx.drawImage(this.imgIcon, data.x, data.y, 20.5, 14.5);
  95. this.ctx.beginPath();
  96. let x = +data.x + 6;
  97. let y = +data.y + 12;
  98. let h1 = 90 - +data.h / 2;
  99. let h2 = 90 + +data.h / 2;
  100. //定义起点
  101. this.ctx.moveTo(x, y);
  102. //以起点为圆心,画一个半径为100的圆弧
  103. this.ctx.arc(x, y, 100, (h1 * Math.PI) / 180, (h2 * Math.PI) / 180);
  104. // this.ctx.arc(0, 0, 100, (30 * Math.PI) / 180, (60 * Math.PI) / 180);
  105. this.ctx.closePath();
  106. this.ctx.fillStyle = "rgba(252,222,147,0.54)";
  107. this.ctx.fill();
  108. },
  109. clear() {
  110. this.ctx.clearRect(-250, -40, 500, 1000);
  111. },
  112. drawBg() {
  113. this.ctxBg.clearRect(0, 0, 1000, 500);
  114. this.imgBg.src = this.modelImgSrc;
  115. this.ctxBg.drawImage(this.imgBg, 0, 0, 1000, 500);
  116. },
  117. },
  118. mounted() {
  119. $(document).ready(() => {
  120. this.ctx = document.getElementById("canvas").getContext("2d");
  121. this.ctxBg = document.getElementById("canvasA").getContext("2d");
  122. this.ctx.translate(960, 250);
  123. this.ctx.rotate(Math.PI / 2);
  124. this.imgBg = new Image();
  125. this.imgBg.src = this.modelImgSrc;
  126. this.imgBg.onload = () => {
  127. this.ctxBg.drawImage(this.imgBg, 0, 0, 1000, 500);
  128. };
  129. this.imgIcon = new Image();
  130. this.imgIcon.src = this.aSrc;
  131. // this.ctx.moveTo(100, 100);
  132. // this.ctx.lineTo(200, 100);
  133. // this.imgIcon.onload = () => {
  134. // this.ctx.drawImage(this.imgIcon, 0, 0, 29, 41);
  135. // };
  136. });
  137. },
  138. };
  139. </script>
  140. <style lang="less" scoped>
  141. .canvasPanel {
  142. position: relative;
  143. canvas {
  144. width: 100%;
  145. }
  146. #canvas {
  147. position: relative;
  148. z-index: 1;
  149. }
  150. #canvasA {
  151. position: absolute;
  152. top: 0;
  153. left: 0;
  154. z-index: 0;
  155. }
  156. }
  157. </style>