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; }