private void MainWindow_Loaded(object sender, EventArgs loadedEvent)
        {
            MainGrid.SizeChanged += MapHost_SizeChanged;

            int pixelWidth  = (int)MainGrid.ActualWidth;
            int pixelHeight = (int)MainGrid.ActualHeight;

            m_mapImage.Init(pixelWidth, pixelHeight, m_oversampleScale);
            MapHost.Source = m_mapImage;
            MapHost.Width  = pixelWidth;
            MapHost.Height = pixelHeight;
            m_mapImage.RespondToResize(pixelWidth, pixelHeight);

            m_mapImage.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged;
            CompositionTarget.Rendering += CompositionTarget_Rendering;

            MouseLeftButtonDown += (o, e) => { if (m_isInputActive)
                                               {
                                                   m_mapImage.HandlePanStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                               }
            };
            PreviewMouseLeftButtonUp += (o, e) => { if (m_isInputActive)
                                                    {
                                                        m_mapImage.HandlePanEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                    }
            };
            MouseRightButtonDown += (o, e) => { if (m_isInputActive)
                                                {
                                                    m_mapImage.HandleRotateStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                }
            };
            PreviewMouseRightButtonUp += (o, e) => { if (m_isInputActive)
                                                     {
                                                         m_mapImage.HandleRotateEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                     }
            };
            MouseWheel += (o, e) => { if (m_isInputActive)
                                      {
                                          m_mapImage.HandleZoomEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), e.Delta, Keyboard.Modifiers);
                                      }
            };
            MouseLeave += (o, e) => { if (m_isInputActive)
                                      {
                                          m_mapImage.SetAllInputEventsToPointerUp((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y));
                                      }
            };
            MouseMove += (o, e) => { if (m_isInputActive)
                                     {
                                         m_mapImage.HandleMouseMoveEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                     }
            };

            KeyDown += (o, e) => { m_mapImage.HandleKeyboardDownEvent((int)KeyInterop.VirtualKeyFromKey(e.Key)); };

            MouseDown += MainWindow_MouseDown;
            MouseUp   += MainWindow_MouseUp;

            Dispatcher.Hooks.DispatcherInactive += new EventHandler(DispatcherInactive);
        }
Exemplo n.º 2
0
        private void OnKeyDown(object sender, KeyEventArgs e)
        {
            m_mapImage.HandleKeyboardDownEvent((int)KeyInterop.VirtualKeyFromKey(e.Key));

            if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.LeftShift) && Keyboard.IsKeyDown(Key.F))
            {
                SetFullScreen(!m_isFullscreen);
            }
        }