private void Canvas_MouseMove_1(object sender, System.Windows.Input.MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { DrawingData data; Line line = new Line(); line.Stroke = currentBrush; line.X1 = currentPoint.X; line.Y1 = currentPoint.Y; line.X2 = e.GetPosition(this).X; line.Y2 = e.GetPosition(this).Y; currentPoint = e.GetPosition(this); if (sender != null && isConnected) { data = new DrawingData(line.X1, line.Y1); Byte[] data1 = data.ToBytesPoints(); this.sender.Send(data1, data1.Length); data = new DrawingData(line.X2, line.Y2); Byte[] data2 = data.ToBytesPoints(); this.sender.Send(data2, data2.Length); } paintSurface.Children.Add(line); } }
private void Canvas_MouseDown_1(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (e.ButtonState == MouseButtonState.Pressed) { DrawingData data; currentPoint = e.GetPosition(this); if (sender != null && isConnected) { data = new DrawingData(currentPoint.X, currentPoint.Y, currentColor.A, currentColor.R, currentColor.G, currentColor.B); Byte[] data1 = data.ToBytesAll(); this.sender.Send(data1, data1.Length); } } }
public static DrawingData ToData(byte[] bytes) { DrawingData result = new DrawingData(); result.ClientID = bytes[0]; result.X = BitConverter.ToDouble(bytes, 1); result.Y = BitConverter.ToDouble(bytes, 9); if (bytes.Length > 17) { result.A = bytes[17]; result.R = bytes[18]; result.G = bytes[19]; result.B = bytes[20]; } return(result); }
private void AddLineToCanvas(DrawingData receivedData) { Line line = new Line(); SolidColorBrush brush = new SolidColorBrush(lastColors[receivedData.ClientID]); line.Stroke = brush; if (lastPoints[receivedData.ClientID] != null) { line.X1 = lastPoints[receivedData.ClientID].X; line.Y1 = lastPoints[receivedData.ClientID].Y; line.X2 = receivedData.X; line.Y2 = receivedData.Y; lastPoints[receivedData.ClientID] = receivedData; paintSurface.Children.Add(line); } else { lastPoints[receivedData.ClientID] = receivedData; } }
private static void ProcessData(IAsyncResult ar) { UdpClient c = (UdpClient)ar.AsyncState; IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0); Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint); DrawingData receivedData = DrawingData.ToData(receivedBytes); ClientInfo client = FindClient(receivedIpEndPoint); if (client != null) { receivedData.ClientID = client.ID; if (receivedBytes.Length > 17) { client.NewLine = true; } dataQueue.Enqueue(receivedData); } c.BeginReceive(ProcessData, ar.AsyncState); }
private void ProcessData(IAsyncResult ar) { if (!shouldStop) { UdpClient c = (UdpClient)ar.AsyncState; IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0); Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint); DrawingData receivedData = DrawingData.ToData(receivedBytes); if (receivedBytes.Length > 17) { lastPoints[receivedData.ClientID] = null; lastColors[receivedData.ClientID] = Color.FromArgb(receivedData.A, receivedData.R, receivedData.G, receivedData.B); } paintSurface.Dispatcher.Invoke(new AddLineToCanvasDelegate(AddLineToCanvas), new DrawingData[] { receivedData }); c.BeginReceive(ProcessData, ar.AsyncState); } else { return; } }