Exemplo n.º 1
0
        public DrawingToolsVM(Window parent, CanvasControlVM canvasControl, double fps)
        {
            var pencilTool = new PencilTool(_control.DrawingPanel, (x) => _window.GetDrawingColor(x), ChangeLine, fps);
            var lineTool   = new LineTool(_control.DrawingPanel, (x) => _window.GetDrawingColor(x), () => pencilTool.Thickness, ChangeLine);
            var pickerTool = new PickerTool(_control.DrawingPanel, canvasControl.View, (x, y) => _window.SetDrawingColor(x, y));

            _control.DrawingPanel.Children.Add(canvasControl.View);
            _control.Loaded += (s, e) => Control_Loaded(pencilTool, lineTool, pickerTool, parent);
        }
Exemplo n.º 2
0
        public MainWindow()
        {
            InitializeComponent();

            int max_fps = 40;

            var tcpClient        = new TcpServerConnection();
            var udpClient        = new UdpServerConnection();
            var canvas           = new CanvasControlVM();
            var drawingTools     = new DrawingToolsVM(this, canvas, max_fps);
            var serverConnection = new ServerConnectionVM(tcpClient);

            KeyDown += (s, e) =>
            {
                if (Keyboard.Modifiers != ModifierKeys.Control)
                {
                    return;
                }

                if (e.Key == Key.X)
                {
                    canvas.Clear();
                }
                if (e.Key == Key.S)
                {
                    SaveFileDialog saveFileDialog = new SaveFileDialog {
                        FileName = "unnamed.png"
                    };
                    if (saveFileDialog.ShowDialog() == true)
                    {
                        canvas.Picture.Save(saveFileDialog.FileName, ImageFormat.Png);
                    }
                }
                if (e.Key == Key.T)
                {
                    drawingTools.OpenToolWindow();
                }
            };

            serverConnection.PropertyChanged += (s, e) =>
            {
                if (serverConnection.IsServerConnected)
                {
                    udpClient.Address = serverConnection.Address;
                }
                else
                {
                    udpClient.Stop();
                }
            };
            serverConnection.RoomChanged += () => udpClient.Start(serverConnection.RoomID);
            drawingTools.LineDrawn       += () =>
            {
                canvas.DrawLine(drawingTools.DrawnLine);
                udpClient.SendLine(drawingTools.DrawnLine);
            };

            udpClient.LineReceived += () => Dispatcher.Invoke(() => canvas.DrawLine(udpClient.ReceivedLine.Retrieve(x => x)));
            udpClient.Disconnected += () => Dispatcher.Invoke(() => tcpClient.Disconnect());

            var visSwitch = new VisibilitySwitchView();

            visSwitch.DisplayedContent.Content = serverConnection.View;

            WPFContent.Content         = drawingTools.View;
            ConnectionControls.Content = visSwitch;
        }