Пример #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Viewer_SelectionRegionChanged(object sender, EventArgs e)
 {
     if (!mMoveRegion || !mSelection)
     {
         selection       = Viewer.SelectionRegion;
         selectionCorner = new CornerRegion(selection);
     }
 }
Пример #2
0
 private void imgPreview_SelectionRegionChanged(object sender, EventArgs e)
 {
     if (!mMoveRegion || !mSelection)
     {
         selection       = imgPreview.SelectionRegion;
         selectionCorner = new CornerRegion(selection);
     }
     selectionSrc = AddinUtils.RemapRegion(imgPreview.SelectionRegion, thumb, addin.ImageData);
     toolTip.SetToolTip(imgPreview, $"X:{selectionSrc.X}, Y:{selectionSrc.Y}, W:{selectionSrc.Width}, H:{selectionSrc.Height}]");
 }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Viewer_MouseMove(object sender, MouseEventArgs e)
        {
            PointF pN = Viewer.PointToImage(e.X, e.Y);

            if (e.Button == MouseButtons.Left)
            {
                if (mSelection)
                {
                    #region Mouse Selection
                    if (!mStart)
                    {
                        selection.X = pO.X;
                        selection.Y = pO.Y;
                        mStart      = true;
                    }

                    float dX = pN.X - pO.X;
                    float dY = pN.Y - pO.Y;
                    if (dX < 0)
                    {
                        selection.X     = pN.X;
                        selection.Width = -dX;
                    }
                    else
                    {
                        selection.Width = dX;
                    }

                    if (dY < 0)
                    {
                        selection.Y      = pN.Y;
                        selection.Height = -dY;
                    }
                    else
                    {
                        selection.Height = dY;
                    }

                    #endregion
                }
                else if (mMoveRegion)
                {
                    #region Mouse Move SelectionRegion
                    float dX = pN.X - pO.X;
                    float dY = pN.Y - pO.Y;
                    selection.X = pS.X + dX;
                    selection.Y = pS.Y + dY;
                    #endregion
                }
                else if (mResizeRegion)
                {
                    #region Resize SelectionRegion

                    float dX = pN.X - pL.X;
                    float dY = pN.Y - pL.Y;
                    pL.X = pN.X;
                    pL.Y = pN.Y;

                    if (_selectionKeepAspectRatio)
                    {
                        #region Keep Aspect Ration Resize SelectionRegion

                        switch (mPos)
                        {
                        case CornerRegionType.TopLeft:
                            selection.X      += dX;
                            selection.Y      += dY;
                            selection.Width  -= dX;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopCenter:
                            selection.Y      += dY;
                            selection.Height -= dY;
                            selection.Inflate((selection.Height * cropAspectFactor - selection.Width) / 2.0f, 0);
                            break;

                        case CornerRegionType.TopRight:
                            selection.Y      += dY;
                            selection.Width  += dX;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.MiddleLeft:
                            selection.X     += dX;
                            selection.Width -= dX;
                            selection.Inflate(0, (selection.Width / cropAspectFactor - selection.Height) / 2.0f);
                            break;

                        case CornerRegionType.MiddleCenter:
                            break;

                        case CornerRegionType.MiddleRight:
                            selection.Width += dX;
                            selection.Inflate(0, (selection.Width / cropAspectFactor - selection.Height) / 2.0f);
                            break;

                        case CornerRegionType.BottomLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomCenter:
                            selection.Height += dY;
                            selection.Inflate((selection.Height * cropAspectFactor - selection.Width) / 2.0f, 0);
                            break;

                        case CornerRegionType.BottomRight:
                            selection.Width  += dX;
                            selection.Height += dY;
                            break;
                        }
                        #endregion
                    }
                    else
                    {
                        #region Normal Resize Selection Region
                        switch (mPos)
                        {
                        case CornerRegionType.TopLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopCenter:
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopRight:
                            selection.Width  += dX;
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.MiddleLeft:
                            selection.X     += dX;
                            selection.Width -= dX;
                            break;

                        case CornerRegionType.MiddleCenter:
                            break;

                        case CornerRegionType.MiddleRight:
                            selection.Width += dX;
                            break;

                        case CornerRegionType.BottomLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomCenter:
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomRight:
                            selection.Width  += dX;
                            selection.Height += dY;
                            break;
                        }
                        #endregion
                    }
                    #endregion
                }
                Viewer.SelectionRegion = selection;
                selectionCorner        = new CornerRegion(selection);
            }
            else if (e.Button == MouseButtons.None)
            {
                if (selection.Width > 0 && selection.Height > 0)
                {
                    #region Detect Mouse Role
                    Cursor cur = Cursors.Default;
                    mCornerSide   = selection.GetPosOfRegion(pN, out mPos, out cur);
                    Viewer.Cursor = cur;
                    #endregion
                }
                else
                {
                    mPos          = CornerRegionType.None;
                    mCornerSide   = false;
                    Viewer.Cursor = Cursors.Default;
                }
            }
        }
Пример #4
0
        private void imgPreview_MouseMove(object sender, MouseEventArgs e)
        {
            PointF pN = imgPreview.PointToImage(e.X, e.Y);

            if (e.Button == MouseButtons.Left)
            {
                if (mSelection)
                {
                    #region Mouse Selection
                    if (!mStart)
                    {
                        selection.X = pO.X;
                        selection.Y = pO.Y;
                        mStart      = true;
                    }

                    float dX = pN.X - pO.X;
                    float dY = pN.Y - pO.Y;
                    if (dX < 0)
                    {
                        selection.X     = pN.X;
                        selection.Width = -dX;
                    }
                    else
                    {
                        selection.Width = dX;
                    }

                    if (dY < 0)
                    {
                        selection.Y      = pN.Y;
                        selection.Height = -dY;
                    }
                    else
                    {
                        selection.Height = dY;
                    }
                    #endregion
                }
                else if (mMoveRegion)
                {
                    #region Mouse Move SelectionRegion
                    float dX = pN.X - pO.X;
                    float dY = pN.Y - pO.Y;
                    selection.X = pS.X + dX;
                    selection.Y = pS.Y + dY;
                    #endregion
                }
                else if (mResizeRegion)
                {
                    #region Resize SelectionRegion

                    float dX = pN.X - pL.X;
                    float dY = pN.Y - pL.Y;
                    pL.X = pN.X;
                    pL.Y = pN.Y;

                    float min = 0;

                    if (cropMode == CropMode.AspectRatio)
                    {
                        #region Keep Aspect Ration Resize SelectionRegion

                        switch (mPos)
                        {
                        case CornerRegionType.TopLeft:
                            selection.X      += dX;
                            selection.Y      += dY;
                            selection.Width  -= dX;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopCenter:
                            selection.Y      += dY;
                            selection.Height -= dY;
                            selection.Inflate((selection.Height * cropAspectFactor - selection.Width) / 2.0f, 0);
                            break;

                        case CornerRegionType.TopRight:
                            selection.Y      += dY;
                            selection.Width  += dX;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.MiddleLeft:
                            selection.X     += dX;
                            selection.Width -= dX;
                            selection.Inflate(0, (selection.Width / cropAspectFactor - selection.Height) / 2.0f);
                            break;

                        case CornerRegionType.MiddleCenter:
                            break;

                        case CornerRegionType.MiddleRight:
                            selection.Width += dX;
                            selection.Inflate(0, (selection.Width / cropAspectFactor - selection.Height) / 2.0f);
                            break;

                        case CornerRegionType.BottomLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomCenter:
                            selection.Height += dY;
                            selection.Inflate((selection.Height * cropAspectFactor - selection.Width) / 2.0f, 0);
                            break;

                        case CornerRegionType.BottomRight:
                            selection.Width  += dX;
                            selection.Height += dY;
                            min = Math.Min(selection.Width, selection.Height);
                            if (selection.Width > selection.Height)
                            {
                                selection.Height = selection.Width / cropAspectFactor;
                            }
                            else
                            {
                                selection.Width = selection.Height * cropAspectFactor;
                            }
                            break;
                        }
                        #endregion
                    }
                    else
                    {
                        #region Normal Resize Selection Region
                        switch (mPos)
                        {
                        case CornerRegionType.TopLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopCenter:
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.TopRight:
                            selection.Width  += dX;
                            selection.Y      += dY;
                            selection.Height -= dY;
                            break;

                        case CornerRegionType.MiddleLeft:
                            selection.X     += dX;
                            selection.Width -= dX;
                            break;

                        case CornerRegionType.MiddleCenter:
                            break;

                        case CornerRegionType.MiddleRight:
                            selection.Width += dX;
                            break;

                        case CornerRegionType.BottomLeft:
                            selection.X      += dX;
                            selection.Width  -= dX;
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomCenter:
                            selection.Height += dY;
                            break;

                        case CornerRegionType.BottomRight:
                            selection.Width  += dX;
                            selection.Height += dY;
                            break;
                        }
                        #endregion
                    }
#if DEBUG
                    string log = $"Region: X[{selection.X}], Y[{selection.Y}], W[{selection.Width}], H[{selection.Height}]";
                    host.OnCommandPropertiesChange(new CommandPropertiesChangeEventArgs(AddinCommand.Log, log));
#endif
                    #endregion
                }
                imgPreview.SelectionRegion = selection;
                selectionCorner            = new CornerRegion(selection);
            }
            else if (e.Button == MouseButtons.None)
            {
                if (selection.Width > 0 && selection.Height > 0)
                {
                    #region Detect Mouse Role
                    Cursor cur = Cursors.Default;
                    mCornerSide       = AddinUtils.GetPosOfRegion(selection, pN, out mPos, out cur);
                    imgPreview.Cursor = cur;
                    #endregion
                }
                else
                {
                    mPos              = CornerRegionType.None;
                    mCornerSide       = false;
                    imgPreview.Cursor = Cursors.Default;
                }
            }
        }