2017-03-02 6 views
0

私はpictureBoxをC#で持っています。私はvScrollBarで移動する必要があります。c#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

私は誰かが私の問題を理解することができます願っています。ありがとう

+0

パネルに配置し、パネルのAutoScrollプロパティをTrueに設定します。 –

答えて

0

MSDN ScrollBar.Scrollイベントの例は、実際にPictureBoxをスクロールする方法を示しています。 MSDNから

コード:HandleScrollScrollBarScrollイベントのイベントハンドラである

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(); 
} 

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); 
    } 
} 

警告、このコードはテストされていません。

+0

ありがとう、それは働いた:) –

関連する問題