Ну, давай поговорим.У меня есть несколько таких элементов управления, поэтому, возможно, я смогу помочь решить возникающие проблемы.
- определить, какой самый маленький слот вы хотите отобразить на экране - скажем, 15 минут
- разделите вашу область просмотра на слоты этой длительности - если вам нужно отобразить 6 часов, создайте список 4x6 = 24 элемента
- , каждый элемент будет списком объектов расписания, найденных в нем
- итерируйте свои объекты планирования и назначьте их списку.
итерируйте список и рисуйте.у вас должно быть достаточно информации для отображения, как указано выше.
class ScheduleItem {DateTime start;DateTime end;string someText;}
class OneSlot {list ItemsInSlot;}
list VisibleSlots;
Если вам нужна точность в пикселях (вам действительно не нужна вторая точность здесь, потому что вы на экране не движетесь во времени) вы делаете слот настолько маленьким, насколько вам необходимо.
8 часов - 28800 секунд;если ваш временной интервал установлен на 30 секунд, у вас будет 960 временных интервалов для отображения на экране.
Надеюсь, это поможет, прокомментируйте меня, если вам нужно дополнительно обсудить это.