コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
ファイル: DrawingData.cs プロジェクト: prostrmk/paint
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: prostrmk/paint
        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);
        }
コード例 #6
0
        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;
            }
        }