2017-05-30 17 views
0

winformsアプリケーションのパネル内にイメージがネストされています。コンテンツのサイズを掛けるときにスクロールバーの位置を掛けるC#

ズームインするボタンとズームアウトするボタンがあります。

ズームインボタンを選択すると画像のサイズが倍になり、ユーザーはこれを2回以上行うことができます。画像(コンテンツ)のサイズが2倍になるので、スクロールバーの長さも2倍になりますが、同じ位置にとどまります。これは、ユーザが以前に見ていた画像の部分が、もはや中央に置かれていないことを意味する。

画像の拡大/縮小前と同じようにコンテンツの表示位置を維持する方法を知りたいと思います。ここで

は私のコード(の一部)はこれまでです:

private void button1_Click(object sender, EventArgs e) 
    { 
     if(zoom != 3) 
     { 
      pictureBox1.Height = pictureBox1.Height * 2; 
      pictureBox1.Width = pictureBox1.Width * 2; 
      panel1.VerticalScroll.Value = panel1.VerticalScroll.Value * 2; 
      panel1.HorizontalScroll.Value = panel1.HorizontalScroll.Value * 2; 
      zoom = zoom + 1; 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     if (zoom != 0) 
     { 
      pictureBox1.Height = pictureBox1.Height/2; 
      pictureBox1.Width = pictureBox1.Width/2; 
      panel1.VerticalScroll.Value = panel1.VerticalScroll.Value/2; 
      panel1.HorizontalScroll.Value = panel1.HorizontalScroll.Value/2; 
      zoom = zoom - 1; 
     } 
    } 

あなたが見ることができるように、私はpanel1.VerticalScroll.Valueとpanel1.Horizo​​ntalScroll.Valueを倍増しようとしたが、これはには影響を与えませんスクロールバーの位置。

答えて

0

計算を行うと、サイズはすでにスクロール値と同じように変更されています。

最初にを入力してください。を入力してください。

はその後サイズとを変更ついにが新しいスクロール値設定:

private void button1_Click(object sender, EventArgs e) 
{ 
    if(zoom != 3) 
    { 
     int scrollV = panel1.VerticalScroll.Value * 2; 
     int scrollH = panel1.HorizontalScroll.Value * 2; 
     pictureBox1.Height = pictureBox1.Height * 2; 
     pictureBox1.Width = pictureBox1.Width * 2; 
     panel1.VerticalScroll.Value = scrollV; 
     panel1.HorizontalScroll.Value = scrollH; 
     zoom = zoom + 1; 
    } 
} 

など。

+0

をこれはのみ/アウトで第二と第三のズームのために働いているようですか? –