private void SynchronizeRegion(SynchronizeRegions sr) { if (sr.PresenterID != ViewModelID) { if (sr.Zoom != -1) { Scale = sr.Zoom; } RegionWidth = sr.Width; RegionHeight = sr.Height; int top = (int)sr.Position.Top; int left = (int)sr.Position.Left; RegionLocation = new Thickness(left, top, 0, 0); if (sr.DoProcessing) { CreateRegion cr = new CreateRegion(); Dictionary <String, Object> parameters = new Dictionary <string, object>(); 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); cr.AffectImage(parameters); } } }
public async Task <ActionResult <CreateRegion> > PostRegion(CreateRegion RegionDto) { var region = _mapper.Map <Region>(RegionDto); var result = await _regionsService.Add(region); return(CreatedAtAction("GetRegion", new { id = result.Id }, result)); }
public virtual void Draw(Graphics g) { if (!IsBound) { Matrix old = g.Transform; g.ScaleTransform(CADInterface.globalZoomNum, CADInterface.globalZoomNum); GraphicPath = new CreateRegion().getModelPath(listShape); //GraphicPath.Flatten(); pathRegion = new CreateRegion().getModelRegion(GraphicPath); //pathRegion.GetRegionData(); Bound = new CreateBound().getModelBound(GraphicPath, g); if (!IsArea) { g.FillPath(Brushes.Pink, GraphicPath); Area = 0; int scale = 5; Matrix matrix = new Matrix(); matrix.Scale(scale, scale); RectangleF[] rtf = pathRegion.GetRegionScans(matrix); for (int i = 0; i < rtf.Length; i++) { Area = Area + rtf[i].Width * rtf[i].Height; } Area = Area / (scale * scale); IsArea = true; } //g.DrawRectangle(pen, Bound.X, Bound.Y, Bound.Width, Bound.Height); g.Transform = old; //pathRegion.Dispose(); GraphicPath.Dispose(); IsBound = true; } #region 测试点的集合是否正确 //Matrix old1 = g.Transform; //g.ScaleTransform(CADInterface.globalZoomNum, CADInterface.globalZoomNum); //for (int i = 0; i < ListPoint.Count; i++) //{ // if (i == ListPoint.Count - 1) // { // g.DrawLine(new Pen(Color.Red, 0.01f), ListPoint[i], ListPoint[0]); // } // else if (i == 0) // { // g.DrawLine(new Pen(Color.Green, 0.01f), ListPoint[i], ListPoint[i + 1]); // } // else // { // g.DrawLine(new Pen(Color.Yellow, 0.01f), ListPoint[i], ListPoint[i + 1]); // } //} //g.Transform = old1; #endregion }
private void SelectAll(Object obj) { if (DisplayedImage == null) { return; } int x = (int)(ImagePosition.Left); int y = (int)(ImagePosition.Top); RegionLocation = new Thickness(x, y, 0, 0); RegionWidth = (int)(ImageSource.Width * Scale); RegionHeight = (int)(ImageSource.Height * Scale); ITool tempTool = Tool; Tool = new CreateRegion(); ImageClickExecute(null); Tool = tempTool; }
private void CalculateRegionProperties() { if (DisplayedImage == null) { return; } Dictionary <String, Object> parameters = new Dictionary <string, object>(); 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); ITool tool = new CreateRegion(); tool.AffectImage(parameters); }
public ImagePresenterViewModel(ObservableCollection <Image> image, int viewModelID, Tools tool, int maxWindows) { switch (tool) { case Tools.None: break; case Tools.RegionSelection: Tool = new CreateRegion(); break; case Tools.PixelInformations: Tool = new PixelPicker(); break; case Tools.RegionTransformation: break; case Tools.ImagePan: Tool = new PanImage(); break; case Tools.Rotate: Tool = new Rotate(); break; default: break; } ViewModelID = viewModelID; MaxWindows = maxWindows; _imageList = new ObservableCollection <Image>(); _imageList = image; ImageIndex = 0; DisplayedImage = _imageList[_imageIndex]; IsSynchronized = true; Scale = 1; SubscriptionToken token; token = _aggregator.GetEvent <SerializeOutputEvent>().Subscribe(SerializeOutputFromPresenters); _subscriptionTokens.Add(typeof(SerializeOutputEvent), token); token = _aggregator.GetEvent <RotateImageEvent>().Subscribe(RotateImage); _subscriptionTokens.Add(typeof(RotateImageEvent), token); token = _aggregator.GetEvent <SynchronizationEvent>().Subscribe(i => { if (ViewModelID == i) { IsSynchronized = !IsSynchronized; } }); _subscriptionTokens.Add(typeof(SynchronizationEvent), token); token = _aggregator.GetEvent <SendDisplayedImage>().Subscribe(item => { if ((item.PresenterID == ViewModelID || (item.DoReset == true && item.IsSynchronized && IsSynchronized)) && item.Image != null) { ImagePosition = item.Image.Position; } else if (item.IsSynchronized == true && IsSynchronized && item.DoReset == false) { ImagePosition = new Thickness(ImagePosition.Left + item.OffsetX, ImagePosition.Top + item.OffsetY, -(ImagePosition.Left + item.OffsetX), -(ImagePosition.Top + item.OffsetY)); } if (item.DoProcessing) { CalculateRegionProperties(); } }); _subscriptionTokens.Add(typeof(SendDisplayedImage), token); token = _aggregator.GetEvent <SendToolEvent>().Subscribe(item => { Tool = item; }); _subscriptionTokens.Add(typeof(SendToolEvent), token); token = _aggregator.GetEvent <SendRegionNameEvent>().Subscribe(SaveRegion); _subscriptionTokens.Add(typeof(SendRegionNameEvent), token); token = _aggregator.GetEvent <LoadRegionEvent>().Subscribe(region => { if (region.PresenterID > MaxWindows) { region.PresenterID = DisplayImageWindowViewModel.ImageCounter; } if (region.PresenterID != ViewModelID) { return; } if (_imageList != region.ImageList) { _imageList = region.ImageList; } DisplayedImage = region.ImageList.First(x => x == region.AttachedImage); RegionLocation = new Thickness(region.Position.X * 96.0 / region.DpiX, region.Position.Y * 96.0 / region.DpiY, 0, 0); RegionWidth = (int)(region.Size.Width * 96.0 / region.DpiX); RegionHeight = (int)(region.Size.Height * 96.0 / region.DpiY); ImageIndex = region.ImageIndex; Scale = region.Zoom; ImagePosition = region.ImagePosition; if (IsSynchronized) { SynchronizeRegions sr = new SynchronizeRegions(); sr.PresenterID = ViewModelID; sr.Position = RegionLocation; sr.Width = RegionWidth; sr.Height = RegionHeight; sr.DoProcessing = true; sr.Zoom = Scale; _aggregator.GetEvent <SynchronizeRegions>().Publish(sr); } CalculateRegionProperties(); }); _subscriptionTokens.Add(typeof(LoadRegionEvent), token); token = _aggregator.GetEvent <SendImageList>().Subscribe(item => { try { if (item.Count != 0) { if (!item.Any(x => x == _imageList)) { _imageList = item[0]; ImageIndex = 0; DisplayedImage = _imageList[0]; } } else { DisplayedImage = null; _imageList = null; } } catch (Exception) { } }); _subscriptionTokens.Add(typeof(SendImageList), token); token = _aggregator.GetEvent <ResetRegionsEvent>().Subscribe(() => { RegionHeight = 0; RegionWidth = 0; RegionLocation = new Thickness(0, 0, 0, 0); }); _subscriptionTokens.Add(typeof(ResetRegionsEvent), token); ImageClickCommand = new GalaSoft.MvvmLight.Command.RelayCommand <RoutedEventArgs>(ImageClickExecute); LeftArrowCommand = new RelayCommand(PreviousImage); RightArrowCommand = new RelayCommand(NextImage); SaveRegionCommand = new RelayCommand(OpenSaveRegionWindow); SerializeOutputFromListCommand = new RelayCommand(SerializeOutputFromList); EscapeCommand = new RelayCommand(EscapeClicked); SelectAllCommand = new RelayCommand(SelectAll); ResetPositionCommand = new RelayCommand(ResetPosition); ResetZoomCommand = new RelayCommand(ResetZoom); MouseLeftClickCommand = new GalaSoft.MvvmLight.Command.RelayCommand <RoutedEventArgs>(MouseLeftClick); MouseMoveCommand = new GalaSoft.MvvmLight.Command.RelayCommand <RoutedEventArgs>(MouseMove); MouseOverCommand = new GalaSoft.MvvmLight.Command.RelayCommand <RoutedEventArgs>(MouseEnter); MouseWheelCommand = new GalaSoft.MvvmLight.Command.RelayCommand <MouseWheelEventArgs>(MouseWheel); Filter_BrightnessCommand = new RelayCommand(FilterChoose); Filter_ContrastCommand = new RelayCommand(FilterChoose); Filter_GreyScaleCommand = new RelayCommand(FilterChoose); Filter_NegativeCommand = new RelayCommand(FilterChoose); Filter_SepiaCommand = new RelayCommand(FilterChoose); Filter_ResetCommand = new RelayCommand(FilterChoose); }