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

本文关键字:AutoScrollbar 何使用 GDI+ 绘制 | 更新日期: 2023-09-27 18:19:28

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

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

我该怎么做?

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

只需将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的大小以适应内部绘制的内容,然后表单将自动显示其滚动条。