private void CaptureForm_MouseUp(object sender, MouseEventArgs e) { isMouseDown = false; this.lbMsg.Text = ""; Application.DoEvents(); User32Helper.GetCursorPos(ref downright); Size size = new System.Drawing.Size(Math.Abs(downright.X - upperleft.X), Math.Abs(downright.Y - upperleft.Y)); this.Refresh(); Bitmap bmp = null; if (upperleft.X < downright.X && upperleft.Y < downright.Y)//从左上往右下方拖动 { bmp = ImageHelper.GetImage(upperleft, size); } else if (upperleft.X > downright.X && upperleft.Y > downright.Y) //从右下往左上方拖动 { bmp = ImageHelper.GetImage(downright, size); } else if (upperleft.X < downright.X && upperleft.X > downright.Y)//从左下方往右上方拖动 { bmp = ImageHelper.GetImage(new Point(upperleft.X, downright.Y), size); } else if (upperleft.X > downright.X && upperleft.Y < downright.Y)//从右上方往左下方拖动 { bmp = ImageHelper.GetImage(new Point(downright.X, upperleft.Y), size); } SaveImage(bmp); }
private void CaptureForm_MouseMove(object sender, MouseEventArgs e) { Point currentPoint = new Point(0, 0); User32Helper.GetCursorPos(ref currentPoint); Color c = (this.BackgroundImage as Bitmap).GetPixel(currentPoint.X, currentPoint.Y); string msg = string.Format("R:{0} G:{1} B:{2}", c.R, c.G, c.B); if (!isMouseDown) { this.lbMsg.Text = msg; return; } msg = msg + " " + string.Format("选取的bmp大小{0}:{1}", Math.Abs(e.X - upperleft.X), Math.Abs(e.Y - upperleft.Y)); this.lbMsg.Text = msg; int x_max; int x_min; int y_max; int y_min; if (e.X > upperleft.X) { x_max = e.X; x_min = upperleft.X; } else { x_min = e.X; x_max = upperleft.X; } if (e.Y > upperleft.Y) { y_max = e.Y; y_min = upperleft.Y; } else { y_min = e.Y; y_max = upperleft.Y; } int width = x_max - x_min; int height = y_max - y_min; this.Refresh();//清除上一次的痕迹 using (var g = this.CreateGraphics()) { g.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(x_min - 1, y_min - 1, width + 1, height + 1)); } }
private void CaptureForm_MouseDown(object sender, MouseEventArgs e) { this.Cursor = Cursors.Hand; User32Helper.GetCursorPos(ref upperleft); isMouseDown = true; }