Exemple #1
0
        private void ImageClickExecute(System.Windows.RoutedEventArgs args)
        {
            if (DisplayedImage == null)
            {
                return;
            }
            if (!_escapeClicked)
            {
                if (_tool != null)
                {
                    App.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        Dictionary <String, Object> parameters = new Dictionary <string, object>();
                        switch (Tool.GetToolEnum())
                        {
                        case Tools.None:
                            break;

                        case Tools.RegionSelection:
                            {
                                parameters.Add("RegionLocation", new Point(RegionLocation.Left, RegionLocation.Top));
                                parameters.Add("RegionWidth", RegionWidth);
                                parameters.Add("RegionHeight", RegionHeight);
                                parameters.Add("BitmapSource", ImageSource);
                                parameters.Add("ImagePosition", ImagePosition);
                                parameters.Add("PresenterID", ViewModelID);
                                parameters.Add("Scale", Scale);
                                if (IsSynchronized)
                                {
                                    SynchronizeRegions sr = new SynchronizeRegions();
                                    sr.PresenterID        = ViewModelID;
                                    sr.Position           = RegionLocation;
                                    sr.Width        = RegionWidth;
                                    sr.Height       = RegionHeight;
                                    sr.DoProcessing = true;
                                    _aggregator.GetEvent <SynchronizeRegions>().Publish(sr);
                                }
                            }
                            break;

                        case Tools.PixelInformations:
                            {
                                PixelInformationView piv = new PixelInformationView();
                                piv.Show();
                                _aggregator.GetEvent <SendPixelInformationViewEvent>().Publish(piv);
                                parameters.Add("MouseX", MouseX);
                                parameters.Add("MouseY", MouseY);
                                parameters.Add("Scale", Scale);
                                parameters.Add("BitmapSource", ImageSource);
                                parameters.Add("ImagePosition", ImagePosition);
                            }
                            break;

                        case Tools.RegionTransformation:
                            break;

                        case Tools.ImagePan:
                            {
                                parameters.Add("MouseClickPosition", _mouseClickPosition);
                                parameters.Add("MouseX", MouseX);
                                parameters.Add("MouseY", MouseY);
                                parameters.Add("MouseXDelta", _mouseXDelta);
                                parameters.Add("MouseYDelta", _mouseYDelta);
                                parameters.Add("DisplayedImage", DisplayedImage);
                                parameters.Add("Position", ImagePosition);
                                parameters.Add("PresenterID", ViewModelID);
                                parameters.Add("IsSynchronized", IsSynchronized);
                                parameters.Add("DoProcessing", true);
                            }
                            break;

                        case Tools.Rotate:
                            {
                                List <int> presenters = new List <int>();
                                parameters.Add("DisplayedImage", DisplayedImage);
                                parameters.Add("PresenterID", ViewModelID);
                                parameters.Add("SynchronizedPresenters", presenters);
                                parameters.Add("Angle", 90);
                            }
                            break;

                        default:
                            return;
                        }
                        try
                        {
                            _tool.AffectImage(parameters);
                            if (ToolType == Tools.ImagePan)
                            {
                                CalculateRegionProperties();
                            }
                        }
                        catch (Exception e)
                        {
                            throw e;
                        }
                    }));
                }
            }
            else
            {
                _escapeClicked = false;
            }
            _isDragged = false;
        }