Winforms: создание динамического контроля временной шкалы - PullRequest
4 голосов
/ 27 декабря 2010

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

alt text В настоящее время я рассматриваю возможность создания Picturebox / панели и переопределения события onpaint и рисования всего этого самостоятельно. Но почему-то этот подход кажется неправильным.

Мне было интересно, может быть, есть более простой выход или, возможно, лучшее решение? Как бы вы сделали такой контроль?

Ответы [ 3 ]

3 голосов
/ 28 декабря 2010

Нет, это правильный способ сделать это.Попытка использовать что-то вроде TableLayoutPanel не только мучительно болезненна, но и затягивает серьезную грязь, занимая секунду или больше, чтобы нарисовать себя.Это займет кучу кода, но это не сложный код.Множество возможностей для петель.

Получите прокручиваемый вид с AutoScrollMinSize панели.Используйте Graphics.TranslateTransform (), передавая AutoScrollPosition в событии Paint или переопределении OnPaint.Последнее рекомендуется, получить свой собственный контроль от Panel, чтобы сохранить код отдельно.У вас есть много возможностей, чтобы настроить внешний вид, весело провести время.

1 голос
/ 28 декабря 2010

В последний раз, когда я делал что-то подобное, я делал сетку как растровое изображение, загружал изображение в графическое окно и рисовал прямо на изображении.Проблема с использованием события рисования не является постоянной с минимизацией и т. Д., Если вы не продолжаете перерисовывать его.

0 голосов
/ 27 декабря 2010

Вероятно, было бы проще переопределить литеральный элемент управления или наследовать от класса CompositeControl, а затем отобразить его с помощью HTML (таблиц) и Javascript, а не рисовать его.

...