如何使用GDI+绘制内容时使用AutoScrollbar
本文关键字:AutoScrollbar 何使用 GDI+ 绘制 | 更新日期: 2023-09-27 18:19:28
我用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
的大小以适应内部绘制的内容,然后表单将自动显示其滚动条。