Home > Web Front-end > Vue.js > How to implement online drawing function in Vue?

How to implement online drawing function in Vue?

WBOY
Release: 2023-06-25 13:09:25
Original
2798 people have browsed it

Vue is a modern JavaScript framework and one of the most popular front-end frameworks today. It is widely used for building single page applications (SPA) and dynamic web pages. Vue provides a rich set of tools and components to provide developers with fast and reliable solutions, allowing developers to easily develop various website applications and interactive applications. In this article, we will explore how to develop online drawing functionality using Vue. This is a very interesting and useful feature for implementing drawing functionality on a web page, and also serves as a good example for learning Vue.

1. Preparation of Vue development environment

Before we start, we need to install Node.js and Vue CLI, because it is the basis of a Vue.js development environment. Vue CLI provides a convenient way to create projects, queue, and install Vue.js related plug-in tools. After installing the Vue CLI, we can use the following command to create a new Vue.js project.

vue create myapp

After the installation is complete, we can start development.

2. Use Vue to develop online drawing functions

Before we start developing online drawing functions, we first need to understand some basic knowledge of Vue. Vue.js is a component-based framework, and we need to use components to define our drawing functions. Specifically, we will create two components, Canvas and Tool.

The Canvas component will be responsible for creating the canvas, implementing drawing and displaying the drawing results; the Tool component is responsible for creating the drawing toolbar, including color, size, etc. These functions are embedded into a common parent component (App.vue). The following is our code:

<template>
  <div class="app">
    <Tool @change-color="changeColor" @change-size="changeSize"/>
    <Canvas :color="color" :size="size"/>
  </div>
</template>
Copy after login

We can see that there are two sub-components Canvas and Tool in the code. App.vue is the parent component.

Tool component code:

<template>
  <div class="tool">
    <select v-model="selectedColor" @change="setColor">
      <option value="black">黑色</option>
      <option value="blue">蓝色</option>
      <option value="red">红色</option>
    </select>
    <select v-model="selectedSize" @change="setSize">
      <option value="1">细线</option>
      <option value="5">中等线</option>
      <option value="10">粗线</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedColor: "black",
      selectedSize: "1",
    };
  },
  methods: {
    setColor() {
      this.$emit("change-color", this.selectedColor);
    },
    setSize() {
      this.$emit("change-size", this.selectedSize);
    },
  },
};
</script>
Copy after login

We can find that the Tool component has two drop-down boxes for selecting color and line size. Through the setColor and setSize methods, we pass the selected color and size as events to the parent component.

Canvas component code:

<template>
  <canvas :class="{ active: painting }" ref="canvas" @mousedown="startPainting" @mouseup="finishPainting" @mousemove="draw">
  </canvas>
</template>

<script>
export default {
  props: ["color", "size"],
  data() {
    return {
      painting: false,
      context: null,
      mouseX: null,
      mouseY: null,
    };
  },
  mounted() {
    this.context = this.$refs.canvas.getContext("2d");
    this.context.lineWidth = this.size;
    this.context.strokeStyle = this.color;
    this.context.lineCap = "round";
  },
  methods: {
    draw(e) {
      if (!this.painting) {
        return;
      }
      this.context.beginPath();
      this.context.moveTo(this.mouseX, this.mouseY);
      this.mouseX = e.pageX - this.$refs.canvas.offsetLeft;
      this.mouseY = e.pageY - this.$refs.canvas.offsetTop;
      this.context.lineTo(this.mouseX, this.mouseY);
      this.context.stroke();
    },
    startPainting(e) {
      this.painting = true;
      this.mouseX = e.pageX - this.$refs.canvas.offsetLeft;
      this.mouseY = e.pageY - this.$refs.canvas.offsetTop;
    },
    finishPainting() {
      this.painting = false;
    },
  },
};
</script>
Copy after login

The Canvas component creates a canvas and sets the drawing parameters in the mounted hook function. The drawing start and end events will be handled by startPainting and finishPainting respectively, and the draw method is used for drawing.

3. Use Vue to run the online drawing function

Finally, we integrate the code together, and we can run our Vue.js online drawing program. Run the following command:

npm start

to start drawing. Draw the pattern on the canvas area while we adjust the color and size online. This app provides some extra features like clearing the canvas etc.

4. Summary

The above is the process of using Vue.js to implement basic online drawing functions. You can then customize the functionality and interactions of the program to suit your needs. Vue.js allows us to develop and maintain our online applications more conveniently and quickly through its rich component functions and life cycle hooks. I hope this article can help readers who are interested in Vue.js development, and I hope you enjoy this Vue.js design.

The above is the detailed content of How to implement online drawing function in Vue?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template