using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;namespace WindowsFormsApplication1{ publicpartialclass Form1 : Form { Thread thDraw; delegatevoid myDrawRectangel(); myDrawRectangel mydraw; private Point ptBegin =new Point(); privatebool blIsDrawRectangle =true; public Form1() { InitializeComponent(); } privatevoid pictureBox1_Paint(object sender, PaintEventArgs e) { if (blIsDrawRectangle) { e.Graphics.DrawRectangle(new Pen(Brushes.Black, 1), ptBegin.X, ptBegin.Y, 50, 50); } } privatevoid Form1_Load(object sender, EventArgs e) { //图片背景初始化this.pictureBox1.Image = System.Drawing.Image.FromFile(@"D:\Image\MianPic.bmp"); mydraw =new myDrawRectangel(ShowDrawRectangle); thDraw =new Thread(Run); thDraw.Start(); } privatevoid Run() { while (true) { if (pictureBox1.Image !=null) { this.BeginInvoke(mydraw); } Thread.Sleep(50); } } privatevoid Form1_FormClosed(object sender, FormClosedEventArgs e) { if (thDraw !=null) { thDraw.Abort(); } } privatevoid ShowDrawRectangle() { Rectangle rec =new Rectangle(ptBegin.X * pictureBox1.Image.Size.Width /460, ptBegin.Y * pictureBox1.Image.Size.Height /350, 50* pictureBox1.Image.Size.Width /460, 50* pictureBox1.Image.Size.Height /350); Graphics g = pictureBox2.CreateGraphics(); g.DrawImage(pictureBox1.Image, pictureBox2.ClientRectangle, rec, GraphicsUnit.Pixel); g.Flush(); } privatevoid pictureBox1_MouseLeave(object sender, EventArgs e) { blIsDrawRectangle =false; pictureBox1.Refresh(); } privatevoid pictureBox1_MouseEnter(object sender, EventArgs e) { blIsDrawRectangle =true; } privatevoid pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.X -25<=0) { ptBegin.X =0; } elseif (pictureBox1.Size.Width - e.X <=25) { ptBegin.X = pictureBox1.Size.Width -50; } else { ptBegin.X = e.X -25; } if (e.Y -25<=0) { ptBegin.Y =0; } elseif (pictureBox1.Size.Height - e.Y <=25) { ptBegin.Y = pictureBox1.Size.Height -50; } else { ptBegin.Y = e.Y -25; } pictureBox1.Refresh(); } }}