public RectangleMarker(PictureEdit pictureEditForDraw, Rectangle rectangle, bool editable = true) { mainPictureEdit = pictureEditForDraw; viewInfo = mainPictureEdit.GetViewInfo() as PictureEditViewInfo; GetImageCenter(); defaultZoomPercent = pictureEditForDraw.Properties.ZoomPercent; drawingRectangle = new Rectangle( rectangle.X, rectangle.Y, (int)(rectangle.Width * pictureEditForDraw.Properties.ZoomPercent / defaultZoomPercent), (int)(rectangle.Height * pictureEditForDraw.Properties.ZoomPercent / defaultZoomPercent)); insertPoint = mainPictureEdit.ViewportToImage(rectangle.Location); defaultRectangle = new RectangleF( (float)(insertPoint.X), (float)(insertPoint.Y), (float)(drawingRectangle.Width), (float)(drawingRectangle.Height)); isMouseClicked = false; Editable = editable; InitEvents(); }
protected double GetActualZoomFactor(PictureEdit Owner) { PictureEditViewInfo viewInfo = Owner.GetViewInfo() as PictureEditViewInfo; if (Owner.Image != null && viewInfo.PictureSourceBounds.Width > 0) { return(viewInfo.PictureScreenBounds.Width / viewInfo.PictureSourceBounds.Width); } return(-1); }
private Point ConvertPoint(PictureEdit edit, Point p) { Point result = Point.Empty; if (edit.Image != null) { PictureEditViewInfo vi = edit.GetViewInfo() as PictureEditViewInfo; double zoomX = 1.0, zoomY = 1.0; if (ZoomPercentChanged && edit.Properties.SizeMode != PictureSizeMode.Squeeze) { zoomX = zoomY = Convert.ToDouble(edit.Properties.ZoomPercent) / 100; } else { switch (edit.Properties.SizeMode) { case PictureSizeMode.Zoom: case PictureSizeMode.Squeeze: zoomX = zoomY = Convert.ToDouble(vi.PictureScreenBounds.Width / edit.Image.Size.Width); break; case PictureSizeMode.Stretch: zoomX = Convert.ToDouble(vi.PictureScreenBounds.Width / edit.Image.Size.Width); zoomY = Convert.ToDouble(vi.PictureScreenBounds.Height / edit.Image.Size.Height); break; case PictureSizeMode.StretchHorizontal: zoomX = Convert.ToDouble(vi.PictureScreenBounds.Width / edit.Image.Size.Width); break; case PictureSizeMode.StretchVertical: zoomY = zoomY = Convert.ToDouble(vi.PictureScreenBounds.Height / edit.Image.Size.Height); break; } } int scrollX = (edit.Controls[1] as DevExpress.XtraEditors.HScrollBar).Value; int scrollY = (edit.Controls[0] as DevExpress.XtraEditors.VScrollBar).Value; int x, y; if (edit.Controls[1].Visible == true) { x = (int)((p.X + scrollX - vi.PictureScreenBounds.X) / zoomX); } else { x = (int)((p.X - vi.PictureScreenBounds.X) / zoomX); } if (edit.Controls[0].Visible == true) { y = (int)((p.Y + scrollY - vi.PictureScreenBounds.Y) / zoomY); } else { y = (int)((p.Y - vi.PictureScreenBounds.Y) / zoomY); } result = new Point(x, y); } return(result); }