Как использовать AutoScrollbar при рисовании содержимого с помощью GDI + - PullRequest
2 голосов
/ 04 января 2012

Я рисую свое содержимое в форме внутри OnPaint события с e.graphics.DrawLine() и т. Д. До сих пор я рисовал в соответствии с формой size (изменяя размеры своих элементов), но теперь я хотел бы рисовать настолько большой, насколько я хочу, и если я рисую вне видимой области (место, где будет нарисован объект, определяется динамически во время выполнения ), Я хочу, чтобы пользователь использовал полосы прокрутки для просмотра частей всего содержимого, которое я рисую.

Я включил AutoScrolling, но я не знаю, как это может помочь мне, когда у меня нет элементов управления в этой форме.

Как я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 04 января 2012

Просто установите для свойства 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);
    }
}
1 голос
/ 04 января 2012

Сначала вы должны установить AutoScroll = true; той Формы, где вы рисуете, затем лучший способ - нарисовать вещи в Panel и изменить размер Panel, чтобы он соответствовал Содержанию, нарисованному внутри, чем Формаавтоматически покажет полосу прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...