c#如何通过vScrollbar移动图片框?

时间:2017-03-02 13:13:21

标签: c# object scrollbar move

我在c#中有pictureBox,我必须按vScrollBar移动它。

它应该是这样的:(伪代码!)

        if (scrollbar.ScrollUp)
        {
            int i = 0;
            i += +1 per scroll
            pictureBox.Location = new Point(0, i);
        }

        if (scrollbar.ScrollDown)
        {
            int k = 0;
            k += -1 per scroll
            pictureBox.Location = new Point(0, k);
        }

enter image description here

我希望有人能理解我的问题。感谢

1 个答案:

答案 0 :(得分:0)

MSDN ScrollBar.Scroll事件的示例实际上显示了如何滚动PictureBox

来自MSDN的代码:

private void HandleScroll(Object sender, ScrollEventArgs e)
{
    //Create a graphics object and draw a portion of the image in the PictureBox.
    Graphics g = pictureBox1.CreateGraphics();

    int xWidth = pictureBox1.Width;
    int yHeight = pictureBox1.Height;

    int x;
    int y;

    if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
    {
        x = e.NewValue;
        y = vScrollBar1.Value;
    }
    else //e.ScrollOrientation == ScrollOrientation.VerticalScroll
    {
        y = e.NewValue;
        x = hScrollBar1.Value;
    }

    g.DrawImage(pictureBox1.Image,
      new Rectangle(0, 0, xWidth, yHeight),  //where to draw the image
      new Rectangle(x, y, xWidth, yHeight),  //the portion of the image to draw
      GraphicsUnit.Pixel);

    pictureBox1.Update();
}

其中HandleScrollScrollBar Scroll事件的事件处理程序。

scrollBar1.Scroll += HandleScroll;

假设您正在尝试滚动PictureBox。如果您真的想要移动它,可以尝试以下方法:

private void HandleScroll(Object sender, ScrollEventArgs e)
{   
    var diff = scrollBar1.Value - e.NewValue;

    if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
    {
        pictureBox1.Location = new Point(diff, pictureBox1.Location.Y);
    }
    else //e.ScrollOrientation == ScrollOrientation.VerticalScroll
    {
        pictureBox1.Location = new Point(pictureBox1.Location.X, diff);
    }
}

警告,此代码尚未经过测试。