/// 设置鼠标单击的坐标,以及图片的坐标 /// int mouseX; int mouseY; int picX; int picY; /// /// 当鼠标单击时,给鼠标设定值。初始化。 /// /// /// private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { mouseX = Cursor.Position.X; mouseY = Cursor.Position.Y; picX = this.pictureBox1.Left; picY = this.pictureBox1.Top; //if (isMouseMoveEventAviable == false) // //添加鼠标移动事件 // this.movablePic.MouseMove += this.movablePic_MouseMove; } /// /// 根据鼠标的移动的值,设置 /// /// /// private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { int y = Cursor.Position.Y - mouseY + picY; int x = Cursor.Position.X - mouseX + picX; if (e.Button == MouseButtons.Left) { this.pictureBox1.Top = y; this.pictureBox1.Left = x; } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { mouseX = 0; mouseY = 0; if (this.pictureBox1.Location.X < 0 ) { this.pictureBox1.Left = 0; } if ( this.pictureBox1.Location.Y < 0) { this.pictureBox1.Top = 0; } if ((this.pictureBox1.Left + this.pictureBox1.Width) > this.ClientSize.Width ) { this.pictureBox1.Left = this.ClientSize.Width - this.pictureBox1.Width; } if ((this.pictureBox1.Top + this.pictureBox1.Height) > this.ClientSize.Height) { this.pictureBox1.Top = this.ClientSize.Height - this.pictureBox1.Height; } } private void Form1_Click(object sender, EventArgs e) { this.pictureBox1.Cursor = Cursors.SizeAll; } //////////////////////////////////////////////////////////////////////////// <summary> /// 设置鼠标单击的坐标,以及图片的坐标 /// </summary> int mouseX; int mouseY; int picX; int picY; /// <summary> /// 当鼠标单击时,给鼠标设定值。初始化。 /// </summary> /// <param name="sender"> </param> /// <param name="e"> </param> private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { mouseX = Cursor.Position.X; mouseY = Cursor.Position.Y; picX = this.pictureBox1.Left; picY = this.pictureBox1.Top; //if (isMouseMoveEventAviable == false) // //添加鼠标移动事件 // this.movablePic.MouseMove += this.movablePic_MouseMove; } /// <summary> /// 根据鼠标的移动的值,设置 /// </summary> /// <param name="sender"> </param> /// <param name="e"> </param> private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { int y = Cursor.Position.Y - mouseY + picY; int x = Cursor.Position.X - mouseX + picX; if (e.Button == MouseButtons.Left) { this.pictureBox1.Top = y; this.pictureBox1.Left = x; } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (this.pictureBox1.Left > this.Width || (this.pictureBox1.Left + pictureBox1.Width < 0)) { this.pictureBox1.Left = picX; this.pictureBox1.Top = picY; } if (this.pictureBox1.Top > this.Height || this.pictureBox1.Top + pictureBox1.Height < 0) { this.pictureBox1.Left = picX; this.pictureBox1.Top = picY; } mouseX = 0; mouseY = 0; } private void Form1_Load(object sender, EventArgs e) { this.pictureBox1.Cursor = Cursors.SizeAll; } //////////////////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { Point offset = new Point(0, 0); Point p; Bitmap srcBitmap; Panel Panel1; public Form1() { InitializeComponent(); } private void Panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { p = e.Location; Panel1.Cursor = Cursors.Hand; } private void Panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { offset.Offset(e.X - p.X, e.Y - p.Y); this.MyReDrawTest(offset.X, offset.Y); p = e.Location; } } private void Panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { Panel1.Cursor = Cursors.Default; } private void Panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { this.MyReDrawTest(offset.X, offset.Y); } private void MyReDrawTest(int x, int y) { if (srcBitmap == null) return; BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current; BufferedGraphics myBuffer = currentContext.Allocate(this.Panel1.CreateGraphics(), this.Panel1.DisplayRectangle); myBuffer.Graphics.Clear(this.Panel1.BackColor); myBuffer.Graphics.DrawImage(srcBitmap, offset); myBuffer.Render( this.Panel1 .CreateGraphics() ); myBuffer.Dispose(); } private void Form1_Load(object sender, System.EventArgs e) { Panel1 = new Panel(); Panel1.Dock = DockStyle.Fill; Panel1.MouseDown += Panel1_MouseDown; Panel1.MouseMove += Panel1_MouseMove; Panel1.MouseUp += Panel1_MouseUp; Panel1.Paint += Panel1_Paint; this.Controls.Add(Panel1); OpenFileDialog cd = new OpenFileDialog(); cd.Filter = "bmp文件 (*.bmp)|*.bmp|jpg文件 (*.jpg)|*.jpg|gif文件 (*.gif)|*.gif|所有文件|*.*"; if (cd.ShowDialog() == DialogResult.OK) { srcBitmap = new Bitmap(cd.FileName); offset = new Point(0, 0); Panel1.Invalidate(); } } } }