windows 窗体上的图像放大 Glass

Image magnify Glass on windows form

我正在尝试在 windows 形式的 PictureEdit(devexpress) 控件上使用玻璃放大镜 我们设置了 PictureEdit.SizeMode =Squeeze 。这一点很重要。在我们的应用程序中,我已经在使用 Squeeze size 模式。 我遇到了鼠标位置计算的问题,用于将矩形图像绘制到启用的面板上。 这是启用面板的 PartialMag_Paint 事件的代码。其中我们显示了鼠标指向区域的放大图像

 int srcx = (PartailMagImageView.Location.X + PartailMagImageView.Width / 2);
 int srcy = (PartailMagImageView.Location.Y + PartailMagImageView.Height / 2);

 e.Graphics.DrawImage(this.Image
                    , new System.Drawing.Rectangle(0, 0, PartailMagImageView.Width, PartailMagImageView.Height)
                    , new System.Drawing.Rectangle(srcx - ZoomOutRate / 2, srcy - ZoomOutRate / 2, ZoomOutRate, ZoomOutRate)
                    , GraphicsUnit.Pixel);



                Pen mypen = new Pen(Color.Black, 7);
                e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                e.Graphics.DrawEllipse(mypen, 0, 0, PartailMagImageView.Width - 7, PartailMagImageView.Height - 7);

如果有人需要查看完整的代码示例。我正在将样本附加到保管箱 link https://www.dropbox.com/s/mogmshuiimtvhk7/ImageMagnifyingWindowsForm.zip?dl=0

PictureEdit 具有 ViewportToImage and ImageToViewport 方法,可让您将视口坐标转换为源图像坐标,反之亦然。