/// <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 }
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; }