Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }