示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="region"></param>
        private void SetRegion(CornerRegionType region)
        {
            _region = region;
            switch (region)
            {
            case CornerRegionType.TopLeft:
                btnCSTL.PerformClick();
                break;

            case CornerRegionType.TopCenter:
                btnCSTC.PerformClick();
                break;

            case CornerRegionType.TopRight:
                btnCSTR.PerformClick();
                break;

            case CornerRegionType.MiddleLeft:
                btnCSML.PerformClick();
                break;

            case CornerRegionType.MiddleCenter:
                btnCSMC.PerformClick();
                break;

            case CornerRegionType.MiddleRight:
                btnCSMR.PerformClick();
                break;

            case CornerRegionType.BottomLeft:
                btnCSBL.PerformClick();
                break;

            case CornerRegionType.BottomCenter:
                btnCSBC.PerformClick();
                break;

            case CornerRegionType.BottomRight:
                btnCSBR.PerformClick();
                break;

            default:
                btnCSTL.Checked = false;
                btnCSTC.Checked = false;
                btnCSTR.Checked = false;
                btnCSML.Checked = false;
                btnCSMC.Checked = false;
                btnCSMR.Checked = false;
                btnCSBL.Checked = false;
                btnCSBC.Checked = false;
                btnCSBR.Checked = false;
                break;
            }
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Viewer_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Clicks >= 1 && e.Button == MouseButtons.Right)
            {
                Viewer.SelectNone();
            }

            mSelection    = false;
            mMoveRegion   = false;
            mResizeRegion = false;
            mCornerSide   = false;
            mStart        = false;
            mPos          = CornerRegionType.None;
            Viewer.Cursor = Cursors.Default;
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private CornerRegionType GetRegion()
        {
            if (btnCSTL.Checked)
            {
                _region = CornerRegionType.TopLeft;
            }
            else if (btnCSTC.Checked)
            {
                _region = CornerRegionType.TopCenter;
            }
            else if (btnCSTR.Checked)
            {
                _region = CornerRegionType.TopRight;
            }
            else if (btnCSML.Checked)
            {
                _region = CornerRegionType.MiddleLeft;
            }
            else if (btnCSMC.Checked)
            {
                _region = CornerRegionType.MiddleCenter;
            }
            else if (btnCSMR.Checked)
            {
                _region = CornerRegionType.MiddleRight;
            }
            else if (btnCSBL.Checked)
            {
                _region = CornerRegionType.BottomLeft;
            }
            else if (btnCSBC.Checked)
            {
                _region = CornerRegionType.BottomCenter;
            }
            else if (btnCSBR.Checked)
            {
                _region = CornerRegionType.BottomRight;
            }
            else
            {
                _region = CornerRegionType.None;
            }

            return(_region);
        }
示例#4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnCS_Click(object sender, EventArgs e)
 {
     if (sender == btnCSTL)
     {
         _region = CornerRegionType.TopLeft;
     }
     else if (sender == btnCSTC)
     {
         _region = CornerRegionType.TopCenter;
     }
     else if (sender == btnCSTR)
     {
         _region = CornerRegionType.TopRight;
     }
     else if (sender == btnCSML)
     {
         _region = CornerRegionType.MiddleLeft;
     }
     else if (sender == btnCSMC)
     {
         _region = CornerRegionType.MiddleCenter;
     }
     else if (sender == btnCSMR)
     {
         _region = CornerRegionType.MiddleRight;
     }
     else if (sender == btnCSBL)
     {
         _region = CornerRegionType.BottomLeft;
     }
     else if (sender == btnCSBC)
     {
         _region = CornerRegionType.BottomCenter;
     }
     else if (sender == btnCSBR)
     {
         _region = CornerRegionType.BottomRight;
     }
     else
     {
         _region = CornerRegionType.None;
     }
     this.CornetRegionClick?.Invoke(this, e);
 }
示例#5
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;
                }
            }
        }
示例#6
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;
                }
            }
        }