Ejemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
                        }
                    }
                }
            }
        }