Как очистить холст в Vue? - PullRequest
0 голосов
/ 23 апреля 2020

Я должен очистить холст при нажатии на кнопку. Я думаю, что я пытался всеми способами очистить его, который я нашел на inte rnet. Я очищаю свой холст, но когда я начинаю рисовать снова (на чистом холсте), предыдущий рисунок возвращается. Я покажу вам это в следующих шагах.

ШАГ 1: первый рисунок

enter image description here

ШАГ 2: очистка холста, нажав на кнопку с функцией очистки (пожалуйста, проверьте ниже в моем коде). Результат: холст чистый.

enter image description here

ШАГ 3: Я начинаю рисовать на прозрачном холсте, но когда наведу курсор мыши, появляется новый чертеж со старым.

enter image description here

Мне не нужен этот старый рисунок-призрак, я хочу его очистить Мне нужно полностью очистить холст, чтобы нарисовать совершенно новый рисунок. Может кто-нибудь мне помочь? Заранее спасибо.

КОД:

Play. vue

<template>
  <div class="play">
    <Canvas/>    
  </div>
</template>

<script>
export default {
  name: "play",
  components: {
    Canvas
  }
}
</script>

Canvas. vue

<template>
  <div class="main">
    <canvas id="canvas"></canvas>
    <button v-on:click="clear">clear</button>
  </div>
</template>

<script>
import { fabric } from "fabric";

export default {
  name: "Canvas",
  data: () => ({
    canvas: null
  }),
  methods: {
    clear: function () {
      var ctx = this.canvas.getContext("2d");
      ctx.beginPath();
      ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
    }
  },
  mounted() {
    this.canvas = new fabric.Canvas("canvas");
    ...
  }
}
</script>

1 Ответ

1 голос
/ 23 апреля 2020

Вам нужно использовать .clear() на экземпляре фабрики c canvas

    clear: function () {
      this.canvas.clear();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...