void _viewer_MouseDown(object sender, MouseEventArgs e) { if (command != null && e.Button == MouseButtons.Left) { if (_viewer.ViewBounds.Contains(LeadPoint.Create(e.X, e.Y))) { double xFactor = _viewer.XScaleFactor; double yFactor = _viewer.YScaleFactor; int xOffset = _viewer.ViewBounds.Left; int yOffset = _viewer.ViewBounds.Top; LeadPoint pnt = new LeadPoint((int)((e.X - xOffset) * 1.0 / xFactor + 0.5), (int)((e.Y - yOffset) * 1.0 / yFactor + 0.5)); _drawing = true; _mousedown = true; _center = pnt; _curntMousePoint = _center; _viewer.Invalidate(); if (_viewer.WorkingInteractiveMode is ImageViewerFloaterInteractiveMode) { _mainForm.DisableAllInteractiveModes(_viewer); _form.Viewer.InteractiveModes.BeginUpdate(); _form.NoneInteractiveMode.IsEnabled = true; _form.Viewer.InteractiveModes.EndUpdate(); try { if (_viewer.Floater != null) { RasterRegionXForm xForm = new RasterRegionXForm(); xForm.ViewPerspective = RasterViewPerspective.TopLeft; /*LeadMatrix mm = _viewer.FloaterTransform.OffsetY; * Matrix m = new Matrix((float)mm.M11, (float)mm.M12, (float)mm.M21, (float)mm.M22, (float)mm.OffsetX, (float)mm.OffsetY); * Transformer t = new Transformer(m);*/ LeadMatrix floaterTransform = _viewer.FloaterTransform; xForm.XOffset = (int)floaterTransform.OffsetX; xForm.YOffset = (int)floaterTransform.OffsetY; xForm.YScalarDenominator = xForm.XScalarDenominator = xForm.XScalarNumerator = xForm.YScalarNumerator = 1; _viewer.Image.SetRegion(xForm, _viewer.Floater.GetRegion(null), RasterRegionCombineMode.Set); _viewer.Floater.Dispose(); _viewer.Floater = null; } } catch (Exception ex) { Messager.ShowError(this, ex); } } } } }
private void MyMouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { if (_useROI && _startDrawing) { Point endPt = new Point(e.X, e.Y); if (e.X > _viewer.Image.Width) { endPt.X = _viewer.Image.Width; } if (e.Y > _viewer.Image.Height) { endPt.Y = _viewer.Image.Height; } if (e.X < 0) { endPt.X = 0; } if (e.Y < 0) { endPt.Y = 0; } _drawRect = MakeRect(_originPoint, endPt); _mousePath.Reset(); _mousePath.AddRectangle(_drawRect); // Draw the path to the screen. _viewer.Refresh(); _graph.DrawPath(_myDrawPen, _mousePath); _graph.Dispose(); double power = Math.Log(_viewer.ScaleFactor) / Math.Log(2.0); int numerator = (power > 0.0) ? 1 : (int)(Math.Pow(2.0, -1 * power)); int denominator = (power > 0.0) ? (int)(Math.Pow(2.0, power)) : 1; Leadtools.RasterRegionXForm xForm = new RasterRegionXForm(); xForm.ViewPerspective = RasterViewPerspective.TopLeft; xForm.XScalarNumerator = numerator; xForm.XScalarDenominator = denominator; xForm.YScalarNumerator = numerator; xForm.YScalarDenominator = denominator; xForm.XOffset = _viewer.ScrollOffset.X; xForm.YOffset = _viewer.ScrollOffset.Y; _viewer.BeginRender(); if (!_viewer.Image.HasRegion) { _viewer.Image.AddRectangleToRegion(xForm, Leadtools.Demos.Converters.ConvertRect(_drawRect), RasterRegionCombineMode.Set); } else { _viewer.Image.AddRectangleToRegion(xForm, Leadtools.Demos.Converters.ConvertRect(_drawRect), RasterRegionCombineMode.Or); } _viewer.EndRender(); } _startDrawing = false; }
void _viewer_MouseDown(object sender, MouseEventArgs e) { if (command != null && e.Button == MouseButtons.Left) { if (_viewer.ViewBounds.Contains(LeadPoint.Create(e.X, e.Y))) { double xFactor = _viewer.XScaleFactor; double yFactor = _viewer.YScaleFactor; int xOffset = _viewer.ClientRectangle.Left; int yOffset = _viewer.ClientRectangle.Top; LeadPoint pnt = new LeadPoint((int)((e.X - xOffset) * 1.0 / xFactor + 0.5), (int)((e.Y - yOffset) * 1.0 / yFactor + 0.5)); _drawing = true; _mousedown = true; _center = pnt; _curntMousePoint = _center; _viewer.Invalidate(); if (_viewer.InteractiveModes.FindById(_form.FloaterInteractiveMode.Id).IsEnabled) { _form.DisableInteractiveModes(_viewer); _viewer.InteractiveModes.EnableById(_form.NoneInteractiveMode.Id); try { if (_viewer.Floater != null) { RasterRegionXForm xForm = new RasterRegionXForm(); xForm.ViewPerspective = RasterViewPerspective.TopLeft; xForm.XOffset = (int)_viewer.FloaterTransform.OffsetX; xForm.YOffset = (int)_viewer.FloaterTransform.OffsetY; xForm.YScalarDenominator = xForm.XScalarDenominator = xForm.XScalarNumerator = xForm.YScalarNumerator = 1; _viewer.Image.SetRegion(xForm, _viewer.Floater.GetRegion(null), RasterRegionCombineMode.Set); _viewer.Floater.Dispose(); _viewer.Floater = null; } } catch (Exception ex) { Messager.ShowError(this, ex); } } } } }