1.VS 2008;2.实现移动PictureBox上的一个曲线图形,类似于Google地图,上下左右可以即时移动。

解决方案 »

  1.   

    1.MouseDown标记开始移动图形
    2.MouseMove里面改变图形的位置坐标
    3.MouseUp标记结束移动图形
      

  2.   


    Point pck;
            bool dragFlag = false;
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                pck = new Point(e.X, e.X);
                dragFlag = true;
            }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (dragFlag)
                {
                    Point pend = this.PointToClient(pictureBox1.PointToScreen(new Point(e.X, e.Y)));
                    pend.Offset(pck.X * -1, pck.Y * -1);
                    pictureBox1.Location = pend;
                }
            }        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
                dragFlag = false;
            }
      

  3.   

    使用Location不是使整个PictureBox都移动了么?我只是想让PictureBox上的图像移动,比如,上面有条曲线,曲线的长度比PictureBox的size.width要长,这时候就想通过移动来显示曲线的其他部分
      

  4.   

    pictureBox放在一个Panel中,panel1.AutoScroll=true;
    将pictureBox的SizeMode设为AutoSize,这样它与图片的大小一致。
    这样panel1中出现滚动条,可以浏览全图了。
      

  5.   

    移动的时候不是改变pictureBox的位置 - -!
    而是在pictureBox的Paint事件中改变图形的位置
    图形的原点坐标为(x, y)
    初始的时候是(0, 0)
    MouseMove后,原点发生变化:
    x += x方向偏移量;
    y += y方向偏移量;
    MouseMove里面加一句this.Invalidate();然后以新的原点位置进行重绘:
            private void pictureBox_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.TranslateTransform(x, y);
            }图形会移动到以(x, y)为原点的位置