本帖最后由 nice000 于 2011-07-20 15:58:25 编辑

解决方案 »

  1.   

    picturebox有mousemove啊,按下后,记录mosemove事件中的左边,然后移动pic的left和top
      

  2.   

    "记录mosemove事件中的左边"?具体实现语句怎么写呢?看的不太明白呢。我是想知道鼠标左键点击后在picturebox中移动的距离,然后我用DrawImage吧图片按照移动后的距离重画
      

  3.   

    flash里面简单,只要两句话。
    .net认为这样的功能对于程序员来说太简单,就没做。
    写一个类,继承picturebox。重写mousedown,mousemove,mouseup事件。
    down记录开始移动的location
    move事件将自己的location修改为鼠标移动的增量。
    up事件结束移动。另外可以通过重写onpaint事件,调用gdi+重绘,来实现控件中bitmap的重绘,来实现图片的鼠标拖动,当然这个时候拖动的是bitmap,或者说是修改了bitmap.不是拖动的控件,但是这样效率较高。
      

  4.   

    以下是实现picturebox的移动
    bool isDown = false;
            int mouseX = 0;
            int mouseY = 0;
            int x;
            int y;        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                isDown = true;
                mouseX = Cursor.Position.X;
                mouseY = Cursor.Position.Y;
            }        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
                isDown = false;
            }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (isDown)
                {
                    x = Cursor.Position.X - mouseX;
                    y = Cursor.Position.Y - mouseY;
                    mouseX = Cursor.Position.X;
                    mouseY = Cursor.Position.Y;
                    pictureBox1.Top += y;
                    pictureBox1.Left += x;
                }
            }
      

  5.   

    运行起来提示:错误 2 “System.Windows.Forms.Cursor”并不包含“Position”的定义
      

  6.   

    是不是只能在windows下运行,不能在wince下运行的呢?