トップ回答者
Panelコントロール内に別のコントロールがない状態でスクロールを実現する方法

質問
回答
-
言語の指定がありませんので C# でサンプルを作ってみましたが、Visual Basic でも同じような書き方でできると思います。
Panel の AutoScroll を True と設定し、AutoScrollMinSize の値を設定することで、スクロールバーを表示することができると思います。あとは、Panel の Scroll イベントでスクロールバーの位置を取得し、Panel の Paint で必要な描画処理を記述します。以下 Panel 内で画像を描画するサンプルです。using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int x; int y; Bitmap bmp; public Form1() { InitializeComponent(); bmp = new Bitmap(@"C:\sample.jpg"); panel1.AutoScroll = true; panel1.AutoScrollMinSize = new Size(bmp.Width, bmp.Height); } private void panel1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(bmp, panel1.ClientRectangle, x, y, panel1.ClientRectangle.Width, panel1.ClientRectangle.Height, GraphicsUnit.Pixel); } private void panel1_Scroll(object sender, ScrollEventArgs e) { x = panel1.HorizontalScroll.Value; y = panel1.VerticalScroll.Value; } } }
- 編集済み kenjinoteMVP 2017年5月17日 9:57
- 回答としてマーク no title 2017年5月20日 2:50
すべての返信
-
言語の指定がありませんので C# でサンプルを作ってみましたが、Visual Basic でも同じような書き方でできると思います。
Panel の AutoScroll を True と設定し、AutoScrollMinSize の値を設定することで、スクロールバーを表示することができると思います。あとは、Panel の Scroll イベントでスクロールバーの位置を取得し、Panel の Paint で必要な描画処理を記述します。以下 Panel 内で画像を描画するサンプルです。using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int x; int y; Bitmap bmp; public Form1() { InitializeComponent(); bmp = new Bitmap(@"C:\sample.jpg"); panel1.AutoScroll = true; panel1.AutoScrollMinSize = new Size(bmp.Width, bmp.Height); } private void panel1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(bmp, panel1.ClientRectangle, x, y, panel1.ClientRectangle.Width, panel1.ClientRectangle.Height, GraphicsUnit.Pixel); } private void panel1_Scroll(object sender, ScrollEventArgs e) { x = panel1.HorizontalScroll.Value; y = panel1.VerticalScroll.Value; } } }
- 編集済み kenjinoteMVP 2017年5月17日 9:57
- 回答としてマーク no title 2017年5月20日 2:50