两个picturebox,一个放图片完整代码如下using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Xml; namespace Test {public partial class Form1 : Form{private bool MouseIsDown = false;private int _x, _y;private Rectangle MouseRect = Rectangle.Empty;public Form1(){InitializeComponent();}private void ResizeToRectangle(Point p){DrawRectangle();MouseRect.Width = p.X - MouseRect.Left;MouseRect.Height = p.Y - MouseRect.Top;DrawRectangle();}private void DrawRectangle(){Rectangle rect = this.RectangleToScreen(MouseRect);ControlPaint.DrawReversibleFrame(rect, Color.White, FrameStyle.Dashed);}private void DrawStart(Point StartPoint){barkPictureBox.Capture = true;Cursor.Clip = this.RectangleToScreen(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height));MouseRect = new Rectangle(StartPoint.X, StartPoint.Y, 0, 0);}private void button1_Click(object sender, EventArgs e){}void barkPictureBox_MouseUp(object sender, MouseEventArgs e){barkPictureBox.Capture = false;Cursor.Clip = Rectangle.Empty;MouseIsDown = false;DrawRectangle();if (MouseRect.X == 0 || MouseRect.Y == 0 || MouseRect.Width == 0 || MouseRect.Height == 0) //如果区域有一个是0就返回 {}else{///代码 }MouseRect = Rectangle.Empty;int sx = _x < e.X ? _x : e.X;int sy = _y < e.Y ? _y : e.Y;int w = Math.Abs(_x - e.X);int h = Math.Abs(_y - e.Y);Graphics g = Graphics.FromHwnd(pictureBox2.Handle);g.Clear(pictureBox2.BackColor);g.DrawImage(barkPictureBox.Image, new Rectangle(0, 0, w, h), sx, sy, w, h, GraphicsUnit.Pixel); }void barkPictureBox_MouseMove(object sender, MouseEventArgs e){if (MouseIsDown) ResizeToRectangle(new Point(e.X + barkPictureBox.Location.X, e.Y + barkPictureBox.Location.Y));}void barkPictureBox_MouseDown(object sender, MouseEventArgs e){_x = e.X;_y = e.Y;MouseIsDown = true;DrawStart(new Point(e.X + barkPictureBox.Location.X, e.Y + barkPictureBox.Location.Y));}private void Form1_Load(object sender, EventArgs e){barkPictureBox.MouseDown += new MouseEventHandler(barkPictureBox_MouseDown);barkPictureBox.MouseMove += new MouseEventHandler(barkPictureBox_MouseMove);barkPictureBox.MouseUp += new MouseEventHandler(barkPictureBox_MouseUp);}} }