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 方法,可让您将视口坐标转换为源图像坐标,反之亦然。
我正在尝试在 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 方法,可让您将视口坐标转换为源图像坐标,反之亦然。