解决方案 »

  1.   

    p1 = p1+new Size(e.X -p2.X,e.Y-p2.Y);                 
    p3 = p1+new Size(e.X -p2.X,e.Y-p2.Y);                   
    p1 = p3; 
    看不懂你这是在干啥
    第一句白赋值了此外,目测根本没有引发Form1_Paint事件
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace picture_move
    {
        public partial class Form1 : Form
        {
            Bitmap bmp;
            bool b;
            Point p1, p2;
            Size sz;
            Graphics gp;        public Form1()
            {
                InitializeComponent();
                bmp = new Bitmap(@".\a.jpg");
                b = false;
                p1 = new Point(10, 10);
                sz = new Size(bmp.Width, bmp.Height);
                gp = this.CreateGraphics();
            }        private void Form1_Paint(object sender, PaintEventArgs e)
            {
            }        private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                if (!b)
                {
                    b = true;
                    p1 = new Point(e.X, e.Y);
                }
            }        private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                if (b)
                {
                    b = false;
                }
                gp.Clear(Color.White);
                gp.DrawImage(bmp, p1);
            }        private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (b)
                {
                    Point p3;
                    Invalidate(new Rectangle(p1, sz));                p1 = p1 + new Size(e.X - p2.X, e.Y - p2.Y);
                    p3 = p1 + new Size(e.X - p2.X, e.Y - p2.Y);                p1 = p3;
                    Invalidate(new Rectangle(p1, sz));
                }
            }        private void Form1_
    Load(object sender, EventArgs e)
            {        }
        }
    }
      

  3.   


    第一句应该没白赋值……
    嗯,确实,实际上就是
    p1=p1+new Size(e.X -p2.X,e.Y-p2.Y)+new Size(e.X -p2.X,e.Y-p2.Y);