2015-12-14 4 views
1

Я создал панель со статическим диапазоном DateTime и хочу продолжить функцию масштабирования, которая динамически меняет время диапазона.Как сделать панель временной шкалы динамической масштабирования на основе значения DateTime в C# winforms

Я попытался осмотреться в Интернете, но только что нашел о масштабировании панели (без значения динамического диапазона DateTime).

Есть ли кто-нибудь знает, как это сделать в C# winforms? Или, может быть, будет здорово, если кто-нибудь узнает об этом?

Просто хочу, чтобы сделать его более ясным, вот пример: Это мой текущий график панели с интервалом в 20 секунд:

Timeline with 20 seconds range DateTime

Например, если я ее увеличить на интервале 04:21:30 и 04:21:50, интервал временной шкалы должен быть меньше (например, через 2 секунды).

ответ

0

Поскольку был кто-то, кто проголосовал и одобрил мой вопрос, я дам ответ на мой вопрос. В конце я использовал события MouseDown и MouseUp. С этими событиями я мог рассчитать масштаб пикселя и DateTime.

Вот упрощенная версия моего кода:

int PressedCoordinate; 
int ReleasedCoordinate; 

private void Mouse_Down(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     int PressedCoordinate = e.X; 
     //in this part, calculate the DateTime based on the scale of pixel vs datetime 
    } 
} 

private void Mouse_Up(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     int ReleasedCoordinate = e.X; 
     //in this part, calculate the DateTime based on the scale of pixel vs datetime 
     //calculate the range and do the zoom-in logic 
    } 
} 

Если вы хотите, чтобы обсудить детали этого, не стесняйтесь комментировать. Ура!