Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Контрол для рисования...


Автор: maxxim 7.2.2008, 15:38
Привет всем! Возникла задача рисования на контроле (самом простом с горизонтальным скролом) так, чтобы при отрисовке примитовов за областью контрола появлялся скрол (нужен только горизонтальный) и при прокрутке можно было увидеть отрисованные элементы...
В общем нужно что - то типа прокручиваемой канвы...
Спасибо...

Автор: mr.DUDA 8.2.2008, 12:58
Рецепт такой:
- кидаем на форму компонент Panel;
- выставляем панели свойство AutoScroll=true, AutoScrollMinSize=(полный размер канвы в пикселах);
- можно также для красоты настроить BackColor и BorderStyle;
- добавляем обработчики событий панели Paint и Scroll, пишем код:
Код
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Point scrollPos = panel1.AutoScrollPosition;
            e.Graphics.TranslateTransform(scrollPos.X, scrollPos.Y);

            // тут рисуем, например:
            e.Graphics.DrawLine(Pens.Black, new Point(10, 10), new Point(20, 20));
        }

        private void panel1_Scroll(object sender, ScrollEventArgs e)
        {
            panel1.Refresh();
        }



Автор: maxxim 8.2.2008, 15:44
Цитата(mr.DUDA @ 8.2.2008,  12:58)
Рецепт такой:
- кидаем на форму компонент Panel;
- выставляем панели свойство AutoScroll=true, AutoScrollMinSize=(полный размер канвы в пикселах);
- можно также для красоты настроить BackColor и BorderStyle;
- добавляем обработчики событий панели Paint и Scroll, пишем код:
Код
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Point scrollPos = panel1.AutoScrollPosition;
            e.Graphics.TranslateTransform(scrollPos.X, scrollPos.Y);

            // тут рисуем, например:
            e.Graphics.DrawLine(Pens.Black, new Point(10, 10), new Point(20, 20));
        }

        private void panel1_Scroll(object sender, ScrollEventArgs e)
        {
            panel1.Refresh();
        }



Спасибо за помошь! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)