Advertisement
Guest User

Canvas

a guest
Mar 26th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3.  
  4.  
  5.  
  6.  
  7. class CanvasComponent extends React.Component {
  8.  
  9.     ;
  10.     constructor(props) {
  11.         super(props);
  12.  
  13.         this.state = {
  14.             x: 0,
  15.             y: 0,
  16.             mousepos: {},
  17.  
  18.             move: false,
  19.             isDown: false,
  20.             pos_prev: false,
  21.             previousPointX: '',
  22.             previousPointY: ''
  23.  
  24.  
  25.         };
  26.  
  27.         this.handleMouseDown = this.handleMouseDown.bind(this);
  28.         this.handleMouseMove = this.handleMouseMove.bind(this);
  29.         this.handleMouseUp = this.handleMouseUp.bind(this);
  30.        
  31.  
  32.     }
  33.  
  34.  
  35.  
  36.  
  37.     _onMouseMove(e) {
  38.  
  39.         e.preventDefault();
  40.  
  41.         const { x, y, } = this.state;
  42.  
  43.  
  44.         this.setState({ x: e.screenX, y: e.screenY, move: true})
  45.         this.setState({mousepos: {x,y}})
  46.        console.log(this.state.move);
  47.        
  48.  
  49.         let timeout;
  50.         (() => {
  51.             clearTimeout(timeout);
  52.             timeout = setTimeout(() => this.setState({ move: false }), 50);
  53.         })();
  54.  
  55.         console.log(this.state.move);
  56.  
  57.  
  58.  
  59.     }
  60.  
  61.  
  62.  
  63.  
  64.  
  65.    handleMouseDown(event) {
  66.         console.log(event);
  67.         this.setState({
  68.             isDown: true,
  69.             previousPointX: event.offsetX,
  70.             previousPointY: event.offsetY
  71.         }
  72.         )
  73.     }
  74.    
  75.  
  76.    
  77.  
  78.  
  79.  
  80.  
  81.  
  82.     dibuix = () => {
  83.  
  84.        
  85.         socket.on('dibuixa_linea', data => {
  86.         let line = data.line;
  87.         const canvas = ReactDOM.findDOMNode(this.refs.canvas);
  88.         let width = canvas.with
  89.         let height = canvas.height
  90.         var ctx = canvas.getContext("2d");
  91.         ctx.beginPath();
  92.         ctx.lineWidth = 18;
  93.    
  94.         //Aqui el que fem es detectar dos punts que delimiten les cordenades X,Y i unirlos amb una linea
  95.         ctx.moveTo(line[0].x * width, line[0].y * height);
  96.         ctx.lineTo(line[1].x * width, line[1].y * height);
  97.         ctx.stroke();
  98.       });
  99.  
  100.     }
  101.  
  102.  
  103.      buclePrincipal = () => {
  104.  
  105.         const {x,y} = this.state;
  106.  
  107.       if( this.state.isDown && this.state.move && this.state.pos_prev){
  108.          
  109.         socket.emit('dibuixa_linea', { line: [this.state.mousepos, this.state.pos_prev] })
  110.        
  111.  
  112.       }
  113.       this.setState({ pos_prev: {x,y}})
  114.       setTimeout(this.buclePrincipal, 25);
  115.       this.buclePrincipal();
  116.    }
  117.        
  118.    
  119.  
  120.     handleMouseMove(event) {
  121.  
  122.     }
  123.  
  124.  
  125.     handleMouseUp(event) {
  126.         this.setState({
  127.             isDown: false
  128.         });
  129.        
  130.         }
  131.    
  132.  
  133.     componentDidMount() {
  134.         const canvas = ReactDOM.findDOMNode(this.refs.canvas);
  135.         const ctx = canvas.getContext("2d");
  136.         ctx.fillStyle = 'rgb(200,255,255)';
  137.         ctx.fillRect(0, 0, 640, 425);
  138.  
  139.     }
  140.  
  141.     render() {
  142.         const { x, y } = this.state;
  143.  
  144.  
  145.  
  146.         return (
  147.  
  148.             <div onMouseMove={this._onMouseMove.bind(this)}>
  149.                 <h1>COORDENADAS: {x} {y} </h1>
  150.  
  151.                 <canvas id="canvas" ref="canvas"
  152.                     width={640}
  153.                     height={425}
  154.                    
  155.                     onMouseDown={
  156.                         e => {
  157.                             let nativeEvent = e.nativeEvent;
  158.                             this.handleMouseDown(nativeEvent);
  159.                         }}
  160.                     onMouseMove={
  161.                         e => {
  162.                             let nativeEvent = e.nativeEvent;
  163.                             this.handleMouseMove(nativeEvent);
  164.                         }}
  165.  
  166.                     onMouseUp={
  167.                         e => {
  168.                             let nativeEvent = e.nativeEvent;
  169.                             this.handleMouseUp(nativeEvent);
  170.                         }}
  171.                 />
  172.  
  173.  
  174.  
  175.  
  176.             </div>
  177.         );
  178.     }
  179. }
  180.  
  181.  
  182.  
  183. export default CanvasComponent;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement