使用GDI +绘制内容时如何使用AutoScrollbar

我使用e.graphics.DrawLine()等在OnPaint事件内的表单上绘制我的内容。 到目前为止,我根据表单size绘制(调整我的元素大小),但现在我想绘制我想要的大小,如果我在可见区域之外绘制(将在运行时动态决定对象的绘制位置),我希望用户使用滚动条来查看我绘制的整个内容的部分。

我已经启用了AutoScrolling但是当我对该表单没有任何控件时,我不知道它对我有何帮助。

我该怎么做?

只需将AutoScrollMinSize属性设置为所需的大小即可。 当表单的ClientSize小于此值时,滚动条会自动出现。 您还需要根据滚动位置偏移您绘制的内容,如下所示:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); this.AutoScroll = true; this.AutoScrollMinSize = new Size(3000, 1000); this.ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs e) { e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y); e.Graphics.DrawLine(Pens.Black, 0, 0, 3000, 1000); base.OnPaint(e); } } 

首先你应该设置AutoScroll = true; 您正在绘制的那个表单,最好的方法是将内容绘制到一个Panel并重新调整Panel大小以适应内部绘制的内容,而不是表单将自动显示它的滚动条。