图片拖动

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace 图片拖动
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private Bitmap m_Image = (Bitmap)Image.FromFile(@"2009120459102338.jpg");

        private Point m_StarPoint = Point.Empty;
        private Point m_ViewPoint = Point.Empty;
        private bool m_StarMove = false;
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Image = m_Image.Clone(new RectangleF(0, 0, pictureBox1.Width, pictureBox1.Height), PixelFormat.Format24bppRgb);
        }



        //private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        //{
        //    Cursor = Cursors.Hand;
        //    m_StarMove = true;
        //    m_StarPoint = e.Location;
        //}

        //private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        //{
        //    if (m_StarMove)
        //    {
        //       // System.Threading.Thread.Sleep(100);

        //        LoadImage(new Point(m_StarPoint.X - e.X, m_StarPoint.Y - e.Y));
        //    }
        //}
        //private void LoadImage(Point m_MovePoint)
        //{
        //    int _X = m_MovePoint.X + m_ViewPoint.X;
        //    int _Y = m_MovePoint.Y + m_ViewPoint.Y;
        //    if (_X < 0) _X = 0;
        //    if (_Y < 0) _Y = 0;
        //    if (_X + pictureBox1.Width > m_Image.Width) _X = m_Image.Width - pictureBox1.Width;
        //    if (_Y + pictureBox1.Height > m_Image.Height) _Y = m_Image.Height - pictureBox1.Height;
        //    pictureBox1.Image = m_Image.Clone(new RectangleF(_X, _Y, pictureBox1.Width, pictureBox1.Height), PixelFormat.Format24bppRgb);
        //    m_ViewPoint.X = _X;
        //    m_ViewPoint.Y = _Y;
        //    pictureBox1.Refresh();
        //}

        //private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        //{
        //    m_StarMove = false;
        //}

        bool wselected = false;
        Point p = new Point();
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            wselected = true;
            p.X = e.X;
            p.Y = e.Y;
        }
        int driftX = 0, driftY = 0;
        int mx = 0, my = 0;
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (wselected)
            {
                driftX = p.X - e.X;
                driftY = p.Y - e.Y;

                mx = mx - driftX;
                my = my - driftY;

                Bitmap bm = new Bitmap(this.pictureBox1.Image);

                Graphics g = pictureBox1.CreateGraphics();
                g.Clear(pictureBox1.BackColor);
                g.DrawImage(bm, mx, my);

                p.X = e.X;
                p.Y = e.Y;

                bm.Dispose();
                g.Dispose();
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            wselected = false;
        }
    }
}
原文地址:https://www.cnblogs.com/hdl217/p/2036010.html