Occurs when the user is performing rubber banding operation.
This event will fire when OnRubberBandDelta is called.
using Leadtools;using Leadtools.Controls;using Leadtools.Codecs;using Leadtools.Drawing;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Color;public static bool AddRoundRect(GraphicsPath path, LeadRect bounds, int xRadius, int yRadius){if (bounds.Width < 1 || bounds.Height < 1)return false;if (xRadius < 1 || yRadius < 1){// Add a rectanglepath.AddRectangle(new Rectangle(bounds.X, bounds.Y, bounds.Width, bounds.Height));return true;}int x = bounds.X;int y = bounds.Y;int width = bounds.Width;int height = bounds.Height;// adapt horizontal and vertical diameter if the rectangle is too littleint xDiameter = xRadius * 2;int yDiameter = yRadius * 2;if (width < (xDiameter))xDiameter = width;if (height < (yDiameter))yDiameter = height;xRadius = xDiameter / 2;yRadius = yDiameter / 2;int xw = x + width;int yh = y + height;int xwr = xw - xRadius;int yhr = yh - yRadius;int xr = x + xRadius;int yr = y + yRadius;int xwr2 = xw - xDiameter;int yhr2 = yh - yDiameter;path.StartFigure();path.AddArc(x, y, xDiameter, yDiameter, 180, 90);path.AddLine(xr, y, xwr, y);path.AddArc(xwr2, y, xDiameter, yDiameter, 270, 90);path.AddLine(xw, yr, xw, yhr);path.AddArc(xwr2, yhr2, xDiameter, yDiameter, 0, 90);path.AddLine(xwr, yh, xr, yh);path.AddArc(x, yhr2, xDiameter, yDiameter, 90, 90);path.AddLine(x, yhr, x, yr);path.CloseFigure();return true;}public void ImageViewerRubberBandInteractiveMode_Example(){ImageViewerRubberBandInteractiveMode rubberBandMode = new ImageViewerRubberBandInteractiveMode();foreach (ImageViewerRubberBandShape shape in Enum.GetValues(typeof(ImageViewerRubberBandShape)))_rubberBandShapesComboBox.Items.Add(shape);_rubberBandShapesComboBox.SelectedItem = rubberBandMode.Shape;_rubberBandShapesComboBox.SelectedIndexChanged += (sender, e) => rubberBandMode.Shape = (ImageViewerRubberBandShape)_rubberBandShapesComboBox.SelectedItem;rubberBandMode.RubberBandCompleted += (sender, e) =>{if (e.IsCanceled)return;if (rubberBandMode.Item == null)return;LeadPoint[] points = new LeadPoint[e.Points.Count];for (var i = 0; i < points.Length; i++)points[i] = LeadPoint.Create(e.Points[i].X, e.Points[i].Y);LeadPoint min = LeadPoint.Empty;LeadPoint max = LeadPoint.Empty;for (int i = 0; i < points.Length; i++){points[i] = _imageViewer.ConvertPoint(rubberBandMode.Item, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, points[i]);if (i == 0){min = points[i];max = points[i];}else{min.X = Math.Min(min.X, points[i].X);min.Y = Math.Min(min.Y, points[i].Y);max.X = Math.Max(max.X, points[i].X);max.Y = Math.Max(max.Y, points[i].Y);}}LeadPoint center = LeadPoint.Create(min.X + (max.X - min.X) / 2, min.Y + (max.Y - min.Y) / 2);ImageViewerItem rasterItem = rubberBandMode.Item;RasterImage image = rasterItem.Image;IntPtr hdc = RasterImagePainter.CreateLeadDC(image);using (Graphics graphics = Graphics.FromHdc(hdc)){using (GraphicsPath path = new GraphicsPath()){switch (rubberBandMode.Shape){case ImageViewerRubberBandShape.Rectangle:case ImageViewerRubberBandShape.Ellipse:{LeadRect rect = LeadRect.Normalize(LeadRect.FromLTRB(points[0].X, points[0].Y, points[1].X, points[1].Y));Rectangle rc = new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);if (rubberBandMode.Shape == ImageViewerRubberBandShape.Rectangle)path.AddRectangle(rc);elsepath.AddEllipse(rc);}break;case ImageViewerRubberBandShape.RoundRectangle:{LeadSize radius = rubberBandMode.RoundRectangleRadius;LeadRect rect = LeadRect.Normalize(LeadRect.FromLTRB(points[0].X, points[0].Y, points[1].X, points[1].Y));AddRoundRect(path, rect, radius.Width, radius.Height);}break;case ImageViewerRubberBandShape.Freehand:{bool firstPoint = true;LeadPoint lastPoint = LeadPoint.Empty;foreach (LeadPoint pt in points){if (!firstPoint)path.AddLine(lastPoint.X, lastPoint.Y, pt.X, pt.Y);elsefirstPoint = false;lastPoint = pt;}}break;default:break;}path.CloseFigure();if (image.Width > 1000 || image.Height > 1000){using (Pen pen = new Pen(Color.Yellow, 8))graphics.DrawPath(pen, path);}else{graphics.DrawPath(Pens.Yellow, path);}}}RasterImagePainter.DeleteLeadDC(hdc);_imageViewer.Invalidate();};rubberBandMode.AutoItemMode = ImageViewerAutoItemMode.AutoSet;rubberBandMode.ItemPart = ImageViewerItemPart.Image;_imageViewer.InteractiveModes.BeginUpdate();_imageViewer.InteractiveModes.Add(rubberBandMode);ImageViewerAutoPanInteractiveMode autopan = new ImageViewerAutoPanInteractiveMode();autopan.PanDelay = 100;_imageViewer.InteractiveModes.Add(autopan);_imageViewer.InteractiveModes.EndUpdate();}
| Parameter | Type | Description |
|---|---|---|
| sender | object | The source of the event. |
| e | ImageViewerRubberBandEventArgs | The event data. |