`
lfwer
  • 浏览: 86711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

canvas实现画板工具

阅读更多

花费大量时间(两周!!!!)制作了一款web端画图工具,可自由涂鸦、裁剪并移动裁剪区域位置、输入文字,包括橡皮擦、箭头工具、动作撤销/重做、保存,并通过websocket实现了画板内容同步,代码已分享,希望大家指正,同进步。

 

 

同步效果

 

 

 前端代码见附件huaban_v3.rar,后端websocket关键代码如下:

package com.lfwer.pinche.web;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.CloseReason;
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;

@ServerEndpoint("/board")
@Component
public class BoardSocket {

	private static Set<Session> peers = Collections.synchronizedSet(new HashSet<Session>());

	private static StringBuffer str = new StringBuffer();


	/**
	 * 客户端有连接的时候就会调用这个方法
	 */
	@OnOpen
	public void open(Session session, EndpointConfig config) {
		peers.add(session);
	}

	/**
	 * 客户端连接断开就会调用此方法
	 */
	@OnClose
	public void close(Session session, CloseReason reason) {
		peers.remove(session);
	}

	/**
	 * 接收到客户端的信息
	 * 
	 * @param msg
	 * @param last
	 */
	@OnMessage
	public void message(Session session, boolean last, String msg) {
		if (!last) {
			str.append(msg);
		} else {
			str.append(msg);
			try {
				for (Session peer : peers) {
					if (!peer.equals(session)) {
						peer.getBasicRemote().sendText(str.toString());
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			str = new StringBuffer();
		}

	}

	/**
	 * 错误监听(当没有关闭socket连接就关闭浏览器会异常)
	 */
	@OnError
	public void error(Session session, Throwable error) {
		String id = session.getId();
		System.out.println("出错的session的id是" + id);
	}

	public BoardSocket() {
		System.out.println("Socket对象创建");
		// 通过对象的创建可以知道不同socket之间的通信不会共享成员变量
	}

}

 

  • 大小: 83.7 KB
  • 大小: 49.9 KB
分享到:
评论

相关推荐

    android---用canvas实现画板

    在这里,我们可以选择`View`来实现画板功能。 ```java public class CustomDrawView extends View { private Path drawPath; private Paint drawPaint; private Paint canvasPaint; private Canvas canvas; ...

    canvas实现的画板

    这个"canvas实现的画板"项目,就是利用了HTML5的Canvas元素及其API来创建一个交互式的绘画工具。用户可以通过这个画板画出直线、矩形和圆形,并且能够自定义线条的粗细和颜色,提升了用户体验和互动性。 Canvas API...

    canvas画板工具 uni-modules、画板、canvas、签名、电子签名、简约风、万能、免费、支持横竖屏

    canvas画板工具结合uni-app,使得在这些平台上实现复杂绘图功能变得更加简单和高效。 画板工具中的曲线和直线绘制功能,通常通过定义起始点和终点,然后利用`moveTo()`和`lineTo()`方法在canvas上绘制。画圆则使用`...

    HTML5 canvas实现的画板功能代码.zip

    这个“HTML5 canvas实现的画板功能代码.zip”压缩包很显然是一个包含实现画板功能的JavaScript代码示例。在本文中,我们将深入探讨HTML5 canvas的画板功能及其相关知识点,以及如何利用JavaScript来实现这一功能。 ...

    可定义笔刷和画布的HTML5 Canvas画板画图工具

    这个"可定义笔刷和画布的HTML5 Canvas画板画图工具"利用了Canvas API来创建一个互动的画布,用户可以在这个画布上进行绘画,选择不同的笔刷样式和颜色,实现丰富的创作功能。 1. **HTML5 Canvas基本概念**:Canvas...

    js+canvas实现画板功能.docx

    JavaScript部分是实现画板功能的核心。以下是一些关键知识点: 1. **Canvas API**: `canvas`元素通过`getContext('2d')`方法获取2D渲染上下文,这个上下文对象(在这里是`contxt`)提供了绘制图形的方法,如`...

    微信小程序 Canvas 画板、签名板Demo

    这个Demo中的画板组件可能是通过监听触摸事件(`touchstart`、`touchmove`、`touchend`)来实现用户在Canvas上的画图功能。当用户触碰屏幕并移动时,会根据触摸点的位置动态绘制线条。同时,为了支持撤销/重做功能...

    html5 canvas实现的绘图工具自由绘制图形画板源码

    html5 canvas实现的绘图工具自由绘制图形画板源码 有很多功能

    canvas小画板_canvas小画板_

    "canvas小画板"项目是一个基于Canvas的简易画板实现,它具备了一些基本的功能,使得用户可以在网页上进行绘画创作。下面将详细介绍Canvas画板的核心知识点和可能实现的功能。 1. **Canvas API基础** - **绘制路径*...

    HTML5 Canvas签名画板功能代码.zip

    在本资源"HTML5 Canvas签名画板功能代码"中,我们找到了一个实现签名画板功能的JavaScript代码实现。这个功能通常用于网站的用户签署电子文档或者进行手写输入,例如电子商务网站的收货确认或电子合同。 首先,...

    canvas实现pc端画板.zip

    这个"canvas实现pc端画板.zip"压缩包显然包含了用于创建一个PC端交互式画板的代码资源。我们将深入探讨canvas的核心概念、基本用法以及如何构建一个基本的画板应用。 首先,canvas是一个二维的绘图表面,通过...

    HTML5 Canvas全屏画板涂鸦代码

    HTML5 Canvas全屏画板涂鸦代码是一种基于Web技术实现的简单绘画应用,它利用了HTML5中的Canvas元素,提供了一种在网页上进行实时绘图的平台。Canvas是HTML5的一个重要特性,允许开发者通过JavaScript来绘制图形,...

    canvas画板实例

    在Web开发领域,Canvas是一个非常重要的元素,它允许开发者通过JavaScript来绘制图形,实现动态的、交互式的用户体验。...这种画板在教育、设计、游戏等领域都有广泛的应用,是现代Web开发中的一个重要工具。

    画板、H5canvas制作画板源文件免费下载

    Canvas非常适合创建像画板这样需要用户交互的动态图形应用。通过Canvas,我们可以监听用户的鼠标或触摸事件,进而响应用户的绘画操作,例如绘制直线、曲线、填充颜色等。 2. jQuery: jQuery是一个流行的JavaScript...

    canvas像素画板的实现代码

    本篇文章将探讨如何利用canvas实现一个像素风格的画板,该画板具备擦除、框选变色以及绘制各种图形的功能。 首先,我们需要创建一个名为`Pixel`的类,它表示像素格子。`Pixel`类包含属性如`x`和`y`(中心点坐标),...

    HTML5 Canvas全屏画板涂鸦代码.zip

    HTML5 Canvas全屏画板涂鸦代码是一个基于Web技术实现的互动画板应用,它允许用户在网页上进行自由的绘画操作。这个压缩包包含了实现该功能的核心代码,包括HTML、CSS和JavaScript部分。让我们详细了解一下这个应用的...

    HTML5 canvas多功能涂鸦画板绘图代码.zip

    这个"HTML5 canvas多功能涂鸦画板绘图代码"项目利用了canvas和jQuery库来实现一个功能丰富的在线绘图应用程序。以下是关于这个项目的详细知识点: 1. **HTML5 Canvas**:Canvas是一个HTML5标签,它提供了一个二维...

    html5基于canvas实现的带工具台绘画板特效源码.zip

    在这个"html5基于canvas实现的带工具台绘画板特效源码.zip"压缩包中,我们关注的核心是HTML5的Canvas API,这是一个用于在网页上进行图形绘制的JavaScript接口。Canvas提供了一个画布,允许开发者通过JavaScript代码...

Global site tag (gtag.js) - Google Analytics