FormやTextBoxなど、コントロールにスクロールバーを表示する方法もありますが
スクロールバー単体のコントロールも用意されています。
例では
FormにPictureBoxを貼り付けて、起動時に適当な画像を読み込み
(PictureBoxのサイズよりも大きな画像ファイルがいいです)
それをスクロールバーでスクロール表示させています。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { // 適当な画像を指定(大きいのがいいです) Bitmap _bmp = new Bitmap(@"c:\temp\sample.jpg"); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // PictureBoxの再描画が必要な時に呼ばれるハンドラ this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint); // 縦スクロールバーの初期位置、最小値、最大値を設定 this.vScrollBar1.Value = 0; this.vScrollBar1.Minimum = 0; this.vScrollBar1.Maximum = _bmp.Height - pictureBox1.Height; // 横スクロールバーの初期位置、最小値、最大値を設定 this.hScrollBar1.Value = 0; this.hScrollBar1.Minimum = 0; this.hScrollBar1.Maximum = _bmp.Width - pictureBox1.Width; // スクロールバーがスクロールされた際のイベントハンドラ this.vScrollBar1.Scroll += new ScrollEventHandler(ScrollBar_Scroll); this.hScrollBar1.Scroll += new ScrollEventHandler(ScrollBar_Scroll); } void pictureBox1_Paint(object sender, PaintEventArgs e) { // スクロールバー位置より元画像を切り抜いて表示 RectangleF rectSrc = new RectangleF( this.hScrollBar1.Value, this.vScrollBar1.Value, this.pictureBox1.Width, this.pictureBox1.Height); e.Graphics.DrawImage(_bmp, 0, 0, rectSrc, GraphicsUnit.Pixel); } void ScrollBar_Scroll(object sender, ScrollEventArgs e) { // スクロールされたので再描画 this.pictureBox1.Refresh(); } } }
コメントを残す