Панель c # для рисования графики и прокрутки

Я хочу иметь возможность использовать панель или аналогичную графику для рисования на Winform. Я не вижу ничего похожего на добавление полос прокрутки, если графика становится больше, чем контроль?

Можно ли сделать это с помощью панели или есть аналогичный элемент управления, который позволит это?

Благодарю.

Установите для свойства AutoScroll значение true, а свойство AutoScrollMinSize – размер изображения. Теперь полосы прокрутки автоматически появятся, когда изображение слишком велико.

Вы захотите наследовать свой собственный class из Panel, чтобы вы могли установить для свойства DoubleBuffered значение true в конструкторе. В противном случае мерцание будет заметно. Некоторые примеры кода:

using System; using System.Drawing; using System.Windows.Forms; class ImageBox : Panel { public ImageBox() { this.AutoScroll = true; this.DoubleBuffered = true; } private Image mImage; public Image Image { get { return mImage; } set { mImage = value; if (value == null) this.AutoScrollMinSize = new Size(0, 0); else { var size = value.Size; using (var gr = this.CreateGraphics()) { size.Width = (int)(size.Width * gr.DpiX / value.HorizontalResolution); size.Height = (int)(size.Height * gr.DpiY / value.VerticalResolution); } this.AutoScrollMinSize = size; } this.Invalidate(); } } protected override void OnPaint(PaintEventArgs e) { e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y); if (mImage != null) e.Graphics.DrawImage(mImage, 0, 0); base.OnPaint(e); } } 

Я не уверен на 100%, что вы пытаетесь выполнить, но вот аналогичный вопрос SO, который может вам помочь.

Вы также можете попробовать использовать PictureBox, который вы изменили бы вручную по мере увеличения размера графики. Затем установите для вашей формы AutoScroll значение true.

  • Не удается уловить событие нажатия кнопки кнопки панели инструментов
  • как удалить тень под панелью действий с помощью AppCompat.Light.NoActionBar?
  • Как оживить Burger в Arrow с помощью Appcompat v7 21, панели инструментов и DrawerLayout
  • Как скрыть навигационную панель постоянно в андроид-активности?
  • Изменить размер для строки состояния вызова?
  • Создание SearchView, который выглядит как руководство по разработке материалов
  • Панель не получает фокус
  • c: forEach внутри перьев (например, p: panelgrid) внутри ui: repeat
  • Interesting Posts

    Переместить каждые 7 столбцов в новую строку в Excel

    SparkSQL: как работать с нулевыми значениями в пользовательской функции?

    Некоторое уточнение, необходимое для синхронных и асинхронных операций asio

    Log4Net, как добавить настраиваемое поле в мой журнал

    Как ограничить значение элемента XML с помощью xsi: type в XSD?

    Каково максимальное значение для int в PHP?

    Новый ноутбук, два года на складе, будет ли батарея в порядке?

    Как захватить ключевые события из Bluetooth-гарнитуры с помощью android

    Как запретить пользователям удалять папку, сохраняя при этом права на изменение ее содержимого?

    Измените приложение Rails на производство

    Проверьте, инициировано ли событие человеком

    Какие формальные языки могут анализировать современные двигатели регулярных выражений?

    Как преобразовать словарь в строку JSON в C #?

    Использование mklink / h приводит к тому, что «Доступ запрещен».

    Переопределить атрибут авторизации в ASP.NET MVC

    Давайте будем гением компьютера.