欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

canvas实现画板工具

程序员文章站 2022-04-10 20:09:08
...

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

 

canvas实现画板工具
            
    
    博客分类: html5 canvasweb画板websocket 

 

canvas实现画板工具
            
    
    博客分类: html5 canvasweb画板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之间的通信不会共享成员变量
	}

}

 

  • canvas实现画板工具
            
    
    博客分类: html5 canvasweb画板websocket 
  • 大小: 83.7 KB
  • canvas实现画板工具
            
    
    博客分类: html5 canvasweb画板websocket 
  • 大小: 49.9 KB