예제 #1
0
        /// <summary>
        /// 畫框
        /// </summary>
        ///
        void drawRectInit(MouseEventArgs e)
        {
            #region 畫框

            #region new
            if (HitArea(ptMouseDown, drawRect))
            {
                rectLog          = drawRect;
                emor             = eMouseOverRange.inRange;
                RatioPtMouseDown = new Point((int)((ptMouseDown.X - offsetX) / MinRatio), (int)((ptMouseDown.Y - offsetY) / MinRatio));
            }
            else
            {
                drawRect         = new Rectangle(ptMouseDown, new Size(0, 0));
                emor             = eMouseOverRange.outRange;
                RatioPtMouseDown = new Point((int)((ptMouseDown.X - offsetX) / MinRatio), (int)((ptMouseDown.Y - offsetY) / MinRatio));
            }

            #endregion


            #region old
            //drawRect = new Rectangle(ptMouseDown, new Size(0, 0));
            //emor = eMouseOverRange.outRange;
            //RatioPtMouseDown = new Point((int)((ptMouseDown.X - offsetX) / MinRatio), (int)((ptMouseDown.Y - offsetY) / MinRatio));
            #endregion

            #endregion
        }
예제 #2
0
        private void pictureBoxTopDisplay_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                return;
            }
            if (CaptureImageFrom.Image != null)
            {
                #region offset:偏移量、縮放比例

                float RatioW = (float)CaptureImageFrom.Width / (float)CaptureImageFrom.Image.Width;
                float RatioH = (float)CaptureImageFrom.Height / (float)CaptureImageFrom.Image.Height;
                MinRatio = Math.Min(RatioW, RatioH);


                offsetX = (int)(CaptureImageFrom.Image.Width * MinRatio) - CaptureImageFrom.Width;
                if (Math.Abs(offsetX) > 10)
                {
                    offsetX = Math.Abs(offsetX / 2);
                }
                else
                {
                    offsetX = 0;
                }

                offsetY = (int)(CaptureImageFrom.Image.Height * MinRatio) - CaptureImageFrom.Height;
                if (Math.Abs(offsetY) > 10)
                {
                    offsetY = Math.Abs(offsetY / 2);
                }
                else
                {
                    offsetY = 0;
                }

                #endregion

                switch (e.Button)
                {
                case MouseButtons.Left:
                    ptMouseDown = e.Location;

                    #region 超出範圍

                    if ((sender as PictureBox).Image == null)
                    {
                        return;
                    }

                    if (((ptMouseDown.X - offsetX) < 0) || ((ptMouseDown.Y - offsetY)) < 0)    //image 之外
                    {
                        return;
                    }
                    if ((ptMouseDown.X > (offsetX + (CaptureImageFrom.Image.Width * MinRatio))) ||
                        (ptMouseDown.Y > (offsetY + (CaptureImageFrom.Image.Height * MinRatio))))       //image 之外
                    {
                        return;
                    }

                    #endregion

                    #region 畫框
                    if (HitArea(ptMouseDown, drawRect))
                    {
                        rectLog = drawRect;
                        emor    = eMouseOverRange.inRange;
                    }
                    else
                    {
                        drawRect = new Rectangle(ptMouseDown, new Size(0, 0));

                        emor             = eMouseOverRange.outRange;
                        RatioPtMouseDown = new Point((int)((ptMouseDown.X - offsetX) / MinRatio), (int)((ptMouseDown.Y - offsetY) / MinRatio));
                    }
                    #endregion
                    break;

                default:
                    break;
                }

                (sender as PictureBox).Refresh();
            }
            //isMouseDrag = false;
        }