这个你的尝试了,多试几次,找个合适的参数。
居中的事情,你可参考如下代码:- using Leadtools.WinForms;
- using Leadtools;
- using Leadtools.Codecs;
- using Leadtools.ImageProcessing.Color;
- using Leadtools.Drawing;
- void ZoomAndCenter(RasterImageViewer viewer, double scaleFactor)
- {
- // Minimum and maximum scale factors allowed (change if you have to)
- const double minimumScaleFactor = 0.05;
- const double maximumScaleFactor = 11;
- // Normalize the scale factor based on min and max
- scaleFactor = Math.Max(minimumScaleFactor, Math.Min(maximumScaleFactor, scaleFactor));
- // Check if we need to change the scale factor for the viewer
- if(viewer.ScaleFactor != scaleFactor)
- {
- // Get the current center in logical units
- // We will use this point later to re-center the viewer
- // Get what you see in physical coordinates
- Rectangle rc = Rectangle.Intersect(viewer.PhysicalViewRectangle, viewer.ClientRectangle);
- // Get the center of what you see in physical coordinates
- PointF center = new PointF(rc.Left + rc.Width / 2, rc.Top + rc.Height / 2);
- Transformer t = new Transformer(viewer.Transform);
- // Get the center of what you see in logical coordinates
- center = t.PointToLogical(center);
- // Set the new scale factor
- viewer.ScaleFactor = scaleFactor;
- // Bring the original center into the view center
- t = new Transformer(viewer.Transform);
- // Get the center of what you saw before the zoom in physical coordinates
- center = t.PointToPhysical(center);
- // Bring the old center into the center of the view
- viewer.CenterAtPoint(Point.Round(center));
- }
- }
复制代码 |